github.com/cockroachdb/cockroach@v20.2.0-alpha.1+incompatible/c-deps/libroach/batch.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 <rocksdb/utilities/write_batch_with_index.h>
    16  #include "engine.h"
    17  
    18  namespace cockroach {
    19  
    20  struct DBBatch : public DBEngine {
    21    int updates;
    22    bool has_delete_range;
    23    rocksdb::WriteBatchWithIndex batch;
    24  
    25    DBBatch(DBEngine* db);
    26    virtual ~DBBatch();
    27  
    28    virtual DBStatus Put(DBKey key, DBSlice value);
    29    virtual DBStatus Merge(DBKey key, DBSlice value);
    30    virtual DBStatus Delete(DBKey key);
    31    virtual DBStatus SingleDelete(DBKey key);
    32    virtual DBStatus DeleteRange(DBKey start, DBKey end);
    33    virtual DBStatus CommitBatch(bool sync);
    34    virtual DBStatus ApplyBatchRepr(DBSlice repr, bool sync);
    35    virtual DBSlice BatchRepr();
    36    virtual DBStatus Get(DBKey key, DBString* value);
    37    virtual DBIterator* NewIter(DBIterOptions);
    38    virtual DBStatus GetStats(DBStatsResult* stats);
    39    virtual DBStatus GetTickersAndHistograms(DBTickersAndHistogramsResult* stats);
    40    virtual DBString GetCompactionStats();
    41    virtual DBStatus GetEnvStats(DBEnvStatsResult* stats);
    42    virtual DBStatus GetEncryptionRegistries(DBEncryptionRegistries* result);
    43    virtual DBStatus EnvWriteFile(DBSlice path, DBSlice contents);
    44    virtual DBStatus EnvOpenFile(DBSlice path, uint64_t bytes_per_sync, rocksdb::WritableFile** file);
    45    virtual DBStatus EnvReadFile(DBSlice path, DBSlice* contents);
    46    virtual DBStatus EnvAppendFile(rocksdb::WritableFile* file, DBSlice contents);
    47    virtual DBStatus EnvSyncFile(rocksdb::WritableFile* file);
    48    virtual DBStatus EnvCloseFile(rocksdb::WritableFile* file);
    49    virtual DBStatus EnvDeleteFile(DBSlice path);
    50    virtual DBStatus EnvDeleteDirAndFiles(DBSlice dir);
    51    virtual DBStatus EnvLinkFile(DBSlice oldname, DBSlice newname);
    52    virtual DBStatus EnvOpenReadableFile(DBSlice path, rocksdb::RandomAccessFile** file);
    53    virtual DBStatus EnvReadAtFile(rocksdb::RandomAccessFile* file, DBSlice buffer, int64_t offset,
    54                                   int* n);
    55    virtual DBStatus EnvCloseReadableFile(rocksdb::RandomAccessFile* file);
    56    virtual DBStatus EnvOpenDirectory(DBSlice path, rocksdb::Directory** file);
    57    virtual DBStatus EnvSyncDirectory(rocksdb::Directory* file);
    58    virtual DBStatus EnvCloseDirectory(rocksdb::Directory* file);
    59    virtual DBStatus EnvRenameFile(DBSlice oldname, DBSlice newname);
    60    virtual DBStatus EnvCreateDir(DBSlice name);
    61    virtual DBStatus EnvDeleteDir(DBSlice name);
    62    virtual DBStatus EnvListDir(DBSlice name, std::vector<std::string>* result);
    63  };
    64  
    65  struct DBWriteOnlyBatch : public DBEngine {
    66    int updates;
    67    rocksdb::WriteBatch batch;
    68  
    69    DBWriteOnlyBatch(DBEngine* db);
    70    virtual ~DBWriteOnlyBatch();
    71  
    72    virtual DBStatus Put(DBKey key, DBSlice value);
    73    virtual DBStatus Merge(DBKey key, DBSlice value);
    74    virtual DBStatus Delete(DBKey key);
    75    virtual DBStatus SingleDelete(DBKey key);
    76    virtual DBStatus DeleteRange(DBKey start, DBKey end);
    77    virtual DBStatus CommitBatch(bool sync);
    78    virtual DBStatus ApplyBatchRepr(DBSlice repr, bool sync);
    79    virtual DBSlice BatchRepr();
    80    virtual DBStatus Get(DBKey key, DBString* value);
    81    virtual DBIterator* NewIter(DBIterOptions);
    82    virtual DBStatus GetStats(DBStatsResult* stats);
    83    virtual DBStatus GetTickersAndHistograms(DBTickersAndHistogramsResult* stats);
    84    virtual DBString GetCompactionStats();
    85    virtual DBString GetEnvStats(DBEnvStatsResult* stats);
    86    virtual DBStatus GetEncryptionRegistries(DBEncryptionRegistries* result);
    87    virtual DBStatus EnvWriteFile(DBSlice path, DBSlice contents);
    88    virtual DBStatus EnvOpenFile(DBSlice path, uint64_t bytes_per_sync, rocksdb::WritableFile** file);
    89    virtual DBStatus EnvReadFile(DBSlice path, DBSlice* contents);
    90    virtual DBStatus EnvAppendFile(rocksdb::WritableFile* file, DBSlice contents);
    91    virtual DBStatus EnvSyncFile(rocksdb::WritableFile* file);
    92    virtual DBStatus EnvCloseFile(rocksdb::WritableFile* file);
    93    virtual DBStatus EnvDeleteFile(DBSlice path);
    94    virtual DBStatus EnvDeleteDirAndFiles(DBSlice dir);
    95    virtual DBStatus EnvLinkFile(DBSlice oldname, DBSlice newname);
    96    virtual DBStatus EnvOpenReadableFile(DBSlice path, rocksdb::RandomAccessFile** file);
    97    virtual DBStatus EnvReadAtFile(rocksdb::RandomAccessFile* file, DBSlice buffer, int64_t offset,
    98                                   int* n);
    99    virtual DBStatus EnvCloseReadableFile(rocksdb::RandomAccessFile* file);
   100    virtual DBStatus EnvOpenDirectory(DBSlice path, rocksdb::Directory** file);
   101    virtual DBStatus EnvSyncDirectory(rocksdb::Directory* file);
   102    virtual DBStatus EnvCloseDirectory(rocksdb::Directory* file);
   103    virtual DBStatus EnvRenameFile(DBSlice oldname, DBSlice newname);
   104    virtual DBStatus EnvCreateDir(DBSlice name);
   105    virtual DBStatus EnvDeleteDir(DBSlice name);
   106    virtual DBStatus EnvListDir(DBSlice name, std::vector<std::string>* result);
   107  };
   108  
   109  // GetDBBatchInserter returns a WriteBatch::Handler that operates on a
   110  // WriteBatchBase. The caller assumes ownership of the returned handler.
   111  ::rocksdb::WriteBatch::Handler* GetDBBatchInserter(::rocksdb::WriteBatchBase* batch);
   112  
   113  }  // namespace cockroach