Make FileSystem a Customizable Class (#8649)
Summary: Pull Request resolved: https://github.com/facebook/rocksdb/pull/8649 Reviewed By: zhichao-cao Differential Revision: D32036059 Pulled By: mrambacher fbshipit-source-id: 4f1e7557ecac52eb849b83ae02b8d7d232112295main
parent
cfc57f55b5
commit
f72c834eab
@ -0,0 +1,97 @@ |
||||
// Copyright (c) 2019-present, Facebook, Inc. All rights reserved.
|
||||
// This source code is licensed under both the GPLv2 (found in the
|
||||
// COPYING file in the root directory) and Apache 2.0 License
|
||||
// (found in the LICENSE.Apache file in the root directory).
|
||||
//
|
||||
|
||||
#pragma once |
||||
#include "rocksdb/file_system.h" |
||||
namespace ROCKSDB_NAMESPACE { |
||||
#ifndef ROCKSDB_LITE |
||||
class TimedFileSystem : public FileSystemWrapper { |
||||
public: |
||||
explicit TimedFileSystem(const std::shared_ptr<FileSystem>& base); |
||||
|
||||
static const char* kClassName() { return "TimedFS"; } |
||||
const char* Name() const override { return kClassName(); } |
||||
|
||||
IOStatus NewSequentialFile(const std::string& fname, |
||||
const FileOptions& options, |
||||
std::unique_ptr<FSSequentialFile>* result, |
||||
IODebugContext* dbg) override; |
||||
|
||||
IOStatus NewRandomAccessFile(const std::string& fname, |
||||
const FileOptions& options, |
||||
std::unique_ptr<FSRandomAccessFile>* result, |
||||
IODebugContext* dbg) override; |
||||
|
||||
IOStatus NewWritableFile(const std::string& fname, const FileOptions& options, |
||||
std::unique_ptr<FSWritableFile>* result, |
||||
IODebugContext* dbg) override; |
||||
|
||||
IOStatus ReuseWritableFile(const std::string& fname, |
||||
const std::string& old_fname, |
||||
const FileOptions& options, |
||||
std::unique_ptr<FSWritableFile>* result, |
||||
IODebugContext* dbg) override; |
||||
|
||||
IOStatus NewRandomRWFile(const std::string& fname, const FileOptions& options, |
||||
std::unique_ptr<FSRandomRWFile>* result, |
||||
IODebugContext* dbg) override; |
||||
|
||||
IOStatus NewDirectory(const std::string& name, const IOOptions& options, |
||||
std::unique_ptr<FSDirectory>* result, |
||||
IODebugContext* dbg) override; |
||||
|
||||
IOStatus FileExists(const std::string& fname, const IOOptions& options, |
||||
IODebugContext* dbg) override; |
||||
|
||||
IOStatus GetChildren(const std::string& dir, const IOOptions& options, |
||||
std::vector<std::string>* result, |
||||
IODebugContext* dbg) override; |
||||
|
||||
IOStatus GetChildrenFileAttributes(const std::string& dir, |
||||
const IOOptions& options, |
||||
std::vector<FileAttributes>* result, |
||||
IODebugContext* dbg) override; |
||||
|
||||
IOStatus DeleteFile(const std::string& fname, const IOOptions& options, |
||||
IODebugContext* dbg) override; |
||||
|
||||
IOStatus CreateDir(const std::string& dirname, const IOOptions& options, |
||||
IODebugContext* dbg) override; |
||||
|
||||
IOStatus CreateDirIfMissing(const std::string& dirname, |
||||
const IOOptions& options, |
||||
IODebugContext* dbg) override; |
||||
|
||||
IOStatus DeleteDir(const std::string& dirname, const IOOptions& options, |
||||
IODebugContext* dbg) override; |
||||
|
||||
IOStatus GetFileSize(const std::string& fname, const IOOptions& options, |
||||
uint64_t* file_size, IODebugContext* dbg) override; |
||||
|
||||
IOStatus GetFileModificationTime(const std::string& fname, |
||||
const IOOptions& options, |
||||
uint64_t* file_mtime, |
||||
IODebugContext* dbg) override; |
||||
|
||||
IOStatus RenameFile(const std::string& src, const std::string& dst, |
||||
const IOOptions& options, IODebugContext* dbg) override; |
||||
|
||||
IOStatus LinkFile(const std::string& src, const std::string& dst, |
||||
const IOOptions& options, IODebugContext* dbg) override; |
||||
|
||||
IOStatus LockFile(const std::string& fname, const IOOptions& options, |
||||
FileLock** lock, IODebugContext* dbg) override; |
||||
|
||||
IOStatus UnlockFile(FileLock* lock, const IOOptions& options, |
||||
IODebugContext* dbg) override; |
||||
|
||||
IOStatus NewLogger(const std::string& fname, const IOOptions& options, |
||||
std::shared_ptr<Logger>* result, |
||||
IODebugContext* dbg) override; |
||||
}; |
||||
|
||||
#endif // ROCKSDB_LITE
|
||||
} // namespace ROCKSDB_NAMESPACE
|
Loading…
Reference in new issue