1 //  Copyright (c) 2011-present, Facebook, Inc.  All rights reserved.
2 //  This source code is licensed under both the GPLv2 (found in the
3 //  COPYING file in the root directory) and Apache 2.0 License
4 //  (found in the LICENSE.Apache file in the root directory).
5 //
6 // Copyright (c) 2011 The LevelDB Authors. All rights reserved.
7 // Use of this source code is governed by a BSD-style license that can be
8 // found in the LICENSE file. See the AUTHORS file for names of contributors.
9 
10 #pragma once
11 #include <memory>
12 
13 #include "rocksdb/rocksdb_namespace.h"
14 
15 namespace ROCKSDB_NAMESPACE {
16 class FSRandomAccessFile;
17 // This file provides the following main abstractions:
18 // SequentialFileReader : wrapper over Env::SequentialFile
19 // RandomAccessFileReader : wrapper over Env::RandomAccessFile
20 // WritableFileWriter : wrapper over Env::WritableFile
21 // In addition, it also exposed NewReadaheadRandomAccessFile, NewWritableFile,
22 // and ReadOneLine primitives.
23 
24 // NewReadaheadRandomAccessFile provides a wrapper over RandomAccessFile to
25 // always prefetch additional data with every read. This is mainly used in
26 // Compaction Table Readers.
27 std::unique_ptr<FSRandomAccessFile> NewReadaheadRandomAccessFile(
28     std::unique_ptr<FSRandomAccessFile>&& file, size_t readahead_size);
29 }  // namespace ROCKSDB_NAMESPACE
30