#pragma once
#ifndef ROCKSDB_LITE
#include "db/db_impl.h"
#include <vector>
#include <string>
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);
using
DB::Get;
virtual
Status Get(
const
ReadOptions& options,
ColumnFamilyHandle* column_family,
const
Slice& key,
PinnableSlice* value) override;
using
DB::MultiGet;
virtual
std::vector<Status> MultiGet(
const
ReadOptions& options,
const
std::vector<ColumnFamilyHandle*>&,
const
std::vector<Slice>& keys, std::vector<std::string>* values)
override;
using
DBImpl::Put;
virtual
Status Put(
const
WriteOptions&
,
ColumnFamilyHandle*
,
const
Slice&
,
const
Slice&
) override {
return
Status::NotSupported(
"Not supported in compacted db mode."
);
}
using
DBImpl::Merge;
virtual
Status Merge(
const
WriteOptions&
,
ColumnFamilyHandle*
,
const
Slice&
,
const
Slice&
) override {
return
Status::NotSupported(
"Not supported in compacted db mode."
);
}
using
DBImpl::Delete;
virtual
Status Delete(
const
WriteOptions&
,
ColumnFamilyHandle*
,
const
Slice&
) override {
return
Status::NotSupported(
"Not supported in compacted db mode."
);
}
virtual
Status Write(
const
WriteOptions&
,
WriteBatch*
) override {
return
Status::NotSupported(
"Not supported in compacted db mode."
);
}
using
DBImpl::CompactRange;
virtual
Status CompactRange(
const
CompactRangeOptions&
,
ColumnFamilyHandle*
,
const
Slice*
,
const
Slice*
) 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
) override {
return
Status::NotSupported(
"Not supported in compacted db mode."
);
}
virtual
Status GetLiveFiles(std::vector<std::string>&,
uint64_t*
,
bool
=
true
) override {
return
Status::NotSupported(
"Not supported in compacted db mode."
);
}
using
DBImpl::Flush;
virtual
Status Flush(
const
FlushOptions&
,
ColumnFamilyHandle*
) override {
return
Status::NotSupported(
"Not supported in compacted db mode."
);
}
using
DB::IngestExternalFile;
virtual
Status IngestExternalFile(
ColumnFamilyHandle*
,
const
std::vector<std::string>&
,
const
IngestExternalFileOptions&
) 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_;
LevelFilesBrief files_;
CompactedDBImpl(
const
CompactedDBImpl&);
void
operator=(
const
CompactedDBImpl&);
};
}
#endif // ROCKSDB_LITE