25#include "serializer.h"
27#include "transaction.h"
28#include "storagecommon.h"
33class StorageCursorTest;
37template <
class K,
class V>
39 friend class ::BaseTest;
40 friend class ::DuplicatesTest;
41 friend class ::CacheCursorTest;
42 friend class ::StorageCursorTest;
50 virtual void discoveredRecord(
const K& key,
const V& value, TransactionID txn)
const;
51 uint32_t
flags()
const;
53 virtual void addRecord(
const K& key,
const V& value, TransactionID txn);
54 virtual bool forceRecord(
const K& key,
const V& value, TransactionID txn);
55 virtual void changeRecord(
const K& key,
const V& value, TransactionID txn);
56 virtual void removeRecord(
const K& key, TransactionID txn);
57 virtual bool checkRecord(
const K& key, TransactionID txn)
const;
58 virtual void getRecord(
const K& key, V& value, TransactionID txn)
const;
59 virtual V
getRecord(
const K& key, TransactionID txn)
const;
60 virtual std::map<K, V>
readAll(TransactionID txn)
const;
61 virtual void readAll(std::map<K, V>& result, TransactionID txn)
const;
62 virtual void replaceAll(
const std::map<K, V>& data, TransactionID txn);
63 virtual uint32_t
addRecords(
const std::map<K, V>& data, TransactionID txn,
bool overwrite =
false);
67 virtual void addRecord(
const K& key,
const V& value);
69 virtual bool forceRecord(
const K& key,
const V& value);
77 virtual void getRecord(
const K& key, V& value)
const;
81 virtual std::map<K, V>
readAll()
const;
83 virtual void readAll(std::map<K, V>& result)
const;
85 virtual void replaceAll(
const std::map<K, V>& data);
87 virtual uint32_t
addRecords(
const std::map<K, V>& data,
bool overwrite =
false);
96 std::map<uint32_t, Cursor<K, V>*>
cursors;
98 int open(MDB_txn* transaction)
override;
99 void close()
override;
104#include "storage.hpp"
An object to iterate storages.
Definition cursor.h:32
A class handling serialization/deserialization.
Definition serializer.h:33
StorageCommon(Base *parent, const std::string &name, bool duplicates=false)
Constructs a storage interface.
Definition storagecommon.cpp:42
virtual int drop(TransactionID transaction)
Drops content of a storage interface (transaction variant)
Definition storagecommon.cpp:109
const std::string name
this storage name
Definition storagecommon.h:111
const bool duplicates
true if storage supports duplicates
Definition storagecommon.h:112
virtual bool checkRecord(const K &key, TransactionID txn) const
Chechs if storage has value (private transaction variant)
Definition storage.hpp:592
Serializer< V > valueSerializer
internal object that would serialize and deserialize values
Definition storage.h:95
virtual void addRecord(const K &key, const V &value, TransactionID txn)
Adds a key-value record to the storage (private transaction variant)
Definition storage.hpp:107
virtual std::map< K, V > readAll() const
Reads whole storage into a map.
Definition storage.hpp:638
~Storage() override
Destroys a storage.
Definition storage.hpp:59
Serializer< K > keySerializer
internal object that would serialize and deserialize keys
Definition storage.h:94
std::map< uint32_t, Cursor< K, V > * > cursors
a set of cursors that has been created under this storage
Definition storage.h:96
virtual void discoveredRecord(const K &key, const V &value) const
A private virtual method that cursor calls when he reads a record, does nothing here but populates th...
Definition storage.hpp:1088
virtual void replaceAll(const std::map< K, V > &data, TransactionID txn)
Replaces the content of the whole storage with the given (private transaction variant)
Definition storage.hpp:809
void destroyCursor(Cursor< K, V > &cursor)
Frees cursor.
Definition storage.hpp:1047
uint32_t flags() const
Reads current storage flags it was opened with.
Definition storage.hpp:1068
virtual void removeRecord(const K &key, TransactionID txn)
Removes one of the records (private transaction variant)
Definition storage.hpp:971
void close() override
A private virtual method I need to close each storage in the database.
Definition storage.hpp:1014
Cursor< K, V > createCursor()
Creates cursor.
Definition storage.hpp:1030
virtual bool forceRecord(const K &key, const V &value, TransactionID txn)
Adds a key-value record to the storage, overwrites if it already exists (private transaction variant)
Definition storage.hpp:198
virtual void changeRecord(const K &key, const V &value, TransactionID txn)
Changes key-value record to the storage (private transaction variant)
Definition storage.hpp:314
virtual void getRecord(const K &key, V &value, TransactionID txn) const
Gets the record from the database (private transaction, reference variant)
Definition storage.hpp:515
Storage(Base *parent, const std::string &name, bool duplicates=false)
Creates a storage.
Definition storage.hpp:48
virtual uint32_t addRecords(const std::map< K, V > &data, TransactionID txn, bool overwrite=false)
Adds records in bulk (private transaction variant)
Definition storage.hpp:887
int open(MDB_txn *transaction) override
A private virtual method I need to open each storage in the database.
Definition storage.hpp:1006
Public read only transaction.
Definition transaction.h:27
Public writable transaction.
Definition transaction.h:54