// Copyright (c) 2014, Facebook, Inc. All rights reserved. // This source code is licensed under the BSD-style license found in the // LICENSE file in the root directory of this source tree. An additional grant // of patent rights can be found in the PATENTS file in the same directory. #pragma once #ifndef ROCKSDB_LITE #include "db/db_impl.h" #include #include namespace rocksdb { class CompactedDBImpl : public DBImpl { public: CompactedDBImpl(const DBOptions& options, const std::string& dbname); virtual ~CompactedDBImpl(); static Status Open(const Options& options, const std::string& dbname, DB** dbptr); // Implementations of the DB interface using DB::Get; virtual Status Get(const ReadOptions& options, ColumnFamilyHandle* column_family, const Slice& key, std::string* value) override; using DB::MultiGet; virtual std::vector MultiGet( const ReadOptions& options, const std::vector&, const std::vector& keys, std::vector* values) override; using DBImpl::Put; virtual Status Put(const WriteOptions& options, ColumnFamilyHandle* column_family, const Slice& key, const Slice& value) override { return Status::NotSupported("Not supported in compacted db mode."); } using DBImpl::Merge; virtual Status Merge(const WriteOptions& options, ColumnFamilyHandle* column_family, const Slice& key, const Slice& value) override { return Status::NotSupported("Not supported in compacted db mode."); } using DBImpl::Delete; virtual Status Delete(const WriteOptions& options, ColumnFamilyHandle* column_family, const Slice& key) override { return Status::NotSupported("Not supported in compacted db mode."); } virtual Status Write(const WriteOptions& options, WriteBatch* updates) override { return Status::NotSupported("Not supported in compacted db mode."); } using DBImpl::CompactRange; virtual Status CompactRange(ColumnFamilyHandle* column_family, const Slice* begin, const Slice* end, bool reduce_level = false, int target_level = -1, uint32_t target_path_id = 0) override { return Status::NotSupported("Not supported in compacted db mode."); } virtual Status DisableFileDeletions() override { return Status::NotSupported("Not supported in compacted db mode."); } virtual Status EnableFileDeletions(bool force) override { return Status::NotSupported("Not supported in compacted db mode."); } virtual Status GetLiveFiles(std::vector&, uint64_t* manifest_file_size, bool flush_memtable = true) override { return Status::NotSupported("Not supported in compacted db mode."); } using DBImpl::Flush; virtual Status Flush(const FlushOptions& options, ColumnFamilyHandle* column_family) override { return Status::NotSupported("Not supported in compacted db mode."); } private: friend class DB; inline size_t FindFile(const Slice& key); Status Init(const Options& options); ColumnFamilyData* cfd_; Version* version_; const Comparator* user_comparator_; FileLevel files_; Statistics* statistics_; Logger* info_log_; // No copying allowed CompactedDBImpl(const CompactedDBImpl&); void operator=(const CompactedDBImpl&); }; } #endif // ROCKSDB_LITE