github.com/cockroachdb/cockroach@v20.2.0-alpha.1+incompatible/c-deps/libroach/snapshot.h (about) 1 // Copyright 2018 The Cockroach Authors. 2 // 3 // Use of this software is governed by the Business Source License 4 // included in the file licenses/BSL.txt. 5 // 6 // As of the Change Date specified in that file, in accordance with 7 // the Business Source License, use of this software will be governed 8 // by the Apache License, Version 2.0, included in the file 9 // licenses/APL.txt. 10 11 #pragma once 12 13 #include <libroach.h> 14 #include <rocksdb/db.h> 15 #include "engine.h" 16 17 namespace cockroach { 18 19 struct DBSnapshot : public DBEngine { 20 const rocksdb::Snapshot* snapshot; 21 22 DBSnapshot(DBEngine* db) : DBEngine(db->rep, db->iters), snapshot(db->rep->GetSnapshot()) {} 23 virtual ~DBSnapshot(); 24 25 virtual DBStatus Put(DBKey key, DBSlice value); 26 virtual DBStatus Merge(DBKey key, DBSlice value); 27 virtual DBStatus Delete(DBKey key); 28 virtual DBStatus SingleDelete(DBKey key); 29 virtual DBStatus DeleteRange(DBKey start, DBKey end); 30 virtual DBStatus CommitBatch(bool sync); 31 virtual DBStatus ApplyBatchRepr(DBSlice repr, bool sync); 32 virtual DBSlice BatchRepr(); 33 virtual DBStatus Get(DBKey key, DBString* value); 34 virtual DBIterator* NewIter(DBIterOptions); 35 virtual DBStatus GetStats(DBStatsResult* stats); 36 virtual DBStatus GetTickersAndHistograms(DBTickersAndHistogramsResult* stats); 37 virtual DBString GetCompactionStats(); 38 virtual DBStatus GetEnvStats(DBEnvStatsResult* stats); 39 virtual DBStatus GetEncryptionRegistries(DBEncryptionRegistries* result); 40 virtual DBStatus EnvWriteFile(DBSlice path, DBSlice contents); 41 virtual DBStatus EnvOpenFile(DBSlice path, uint64_t bytes_per_sync, rocksdb::WritableFile** file); 42 virtual DBStatus EnvReadFile(DBSlice path, DBSlice* contents); 43 virtual DBStatus EnvAppendFile(rocksdb::WritableFile* file, DBSlice contents); 44 virtual DBStatus EnvSyncFile(rocksdb::WritableFile* file); 45 virtual DBStatus EnvCloseFile(rocksdb::WritableFile* file); 46 virtual DBStatus EnvDeleteFile(DBSlice path); 47 virtual DBStatus EnvDeleteDirAndFiles(DBSlice dir); 48 virtual DBStatus EnvLinkFile(DBSlice oldname, DBSlice newname); 49 virtual DBStatus EnvOpenReadableFile(DBSlice path, rocksdb::RandomAccessFile** file); 50 virtual DBStatus EnvReadAtFile(rocksdb::RandomAccessFile* file, DBSlice buffer, int64_t offset, 51 int* n); 52 virtual DBStatus EnvCloseReadableFile(rocksdb::RandomAccessFile* file); 53 virtual DBStatus EnvOpenDirectory(DBSlice path, rocksdb::Directory** file); 54 virtual DBStatus EnvSyncDirectory(rocksdb::Directory* file); 55 virtual DBStatus EnvCloseDirectory(rocksdb::Directory* file); 56 virtual DBStatus EnvRenameFile(DBSlice oldname, DBSlice newname); 57 virtual DBStatus EnvCreateDir(DBSlice name); 58 virtual DBStatus EnvDeleteDir(DBSlice name); 59 virtual DBStatus EnvListDir(DBSlice name, std::vector<std::string>* result); 60 }; 61 62 } // namespace cockroach