StorageManager - Distributed key-value storage with peer synchronization. More...
#include <storage.h>
Public Member Functions | |
| StorageManager (const StorageConfig &config=StorageConfig()) | |
| Constructor. | |
| ~StorageManager () override | |
| Destructor - saves data and cleans up resources. | |
| StorageManager (const StorageManager &)=delete | |
| StorageManager & | operator= (const StorageManager &)=delete |
| void | attach (NodeContext &ctx) override |
| void | start () override |
| void | stop () override |
| void | set_config (const StorageConfig &config) |
| Replace the configuration. | |
| const StorageConfig & | get_config () const |
| bool | put (const std::string &key, const std::string &value) |
| bool | put (const std::string &key, int64_t value) |
| bool | put (const std::string &key, double value) |
| bool | put (const std::string &key, const std::vector< uint8_t > &value) |
| bool | put_json (const std::string &key, const librats::Json &value) |
| std::optional< std::string > | get_string (const std::string &key) const |
| std::optional< int64_t > | get_int (const std::string &key) const |
| std::optional< double > | get_double (const std::string &key) const |
| std::optional< std::vector< uint8_t > > | get_binary (const std::string &key) const |
| std::optional< librats::Json > | get_json (const std::string &key) const |
| std::optional< StorageValueType > | get_type (const std::string &key) const |
| bool | remove (const std::string &key) |
| bool | has (const std::string &key) const |
| std::vector< std::string > | keys () const |
| std::vector< std::string > | keys_with_prefix (const std::string &prefix) const |
| size_t | size () const |
| bool | empty () const |
| void | clear () |
| bool | save () |
| bool | load () |
| size_t | compact () |
| bool | request_sync () |
| Request a full snapshot from one connected peer. | |
| StorageSyncStatus | get_sync_status () const |
| bool | is_synced () const |
| void | set_change_callback (StorageChangeCallback callback) |
| void | set_sync_complete_callback (StorageSyncCompleteCallback callback) |
| StorageStatistics | get_statistics () const |
| librats::Json | get_statistics_json () const |
Public Member Functions inherited from librats::Subsystem | |
| virtual | ~Subsystem ()=default |
StorageManager - Distributed key-value storage with peer synchronization.
A Node subsystem: attach()/start()/stop() plug it into a Node, and it reaches the mesh only via PeerNetwork. It can also be used standalone as a local, persistent key-value store (network operations no-op until attached).
|
explicit |
Constructor.
| config | Storage configuration settings. |
Loads any existing data from disk and starts the background persistence thread immediately, so the store is usable for local reads/writes before (and without) being added to a Node.
|
override |
Destructor - saves data and cleans up resources.
|
delete |
|
overridevirtual |
Implements librats::Subsystem.
| void librats::StorageManager::clear | ( | ) |
| size_t librats::StorageManager::compact | ( | ) |
| bool librats::StorageManager::empty | ( | ) | const |
| std::optional< std::vector< uint8_t > > librats::StorageManager::get_binary | ( | const std::string & | key | ) | const |
| const StorageConfig & librats::StorageManager::get_config | ( | ) | const |
| std::optional< double > librats::StorageManager::get_double | ( | const std::string & | key | ) | const |
| std::optional< int64_t > librats::StorageManager::get_int | ( | const std::string & | key | ) | const |
| std::optional< librats::Json > librats::StorageManager::get_json | ( | const std::string & | key | ) | const |
| StorageStatistics librats::StorageManager::get_statistics | ( | ) | const |
| librats::Json librats::StorageManager::get_statistics_json | ( | ) | const |
| std::optional< std::string > librats::StorageManager::get_string | ( | const std::string & | key | ) | const |
| StorageSyncStatus librats::StorageManager::get_sync_status | ( | ) | const |
| std::optional< StorageValueType > librats::StorageManager::get_type | ( | const std::string & | key | ) | const |
| bool librats::StorageManager::has | ( | const std::string & | key | ) | const |
| bool librats::StorageManager::is_synced | ( | ) | const |
| std::vector< std::string > librats::StorageManager::keys | ( | ) | const |
| std::vector< std::string > librats::StorageManager::keys_with_prefix | ( | const std::string & | prefix | ) | const |
| bool librats::StorageManager::load | ( | ) |
|
delete |
| bool librats::StorageManager::put | ( | const std::string & | key, |
| const std::string & | value | ||
| ) |
| bool librats::StorageManager::put | ( | const std::string & | key, |
| const std::vector< uint8_t > & | value | ||
| ) |
| bool librats::StorageManager::put | ( | const std::string & | key, |
| double | value | ||
| ) |
| bool librats::StorageManager::put | ( | const std::string & | key, |
| int64_t | value | ||
| ) |
| bool librats::StorageManager::put_json | ( | const std::string & | key, |
| const librats::Json & | value | ||
| ) |
| bool librats::StorageManager::remove | ( | const std::string & | key | ) |
| bool librats::StorageManager::request_sync | ( | ) |
Request a full snapshot from one connected peer.
| bool librats::StorageManager::save | ( | ) |
| void librats::StorageManager::set_change_callback | ( | StorageChangeCallback | callback | ) |
| void librats::StorageManager::set_config | ( | const StorageConfig & | config | ) |
Replace the configuration.
Size limits are clamped (see StorageConfig). Call it before start(): the sync thread reads its tuning once when it starts, and the store's other threads read the config without a lock.
| void librats::StorageManager::set_sync_complete_callback | ( | StorageSyncCompleteCallback | callback | ) |
| size_t librats::StorageManager::size | ( | ) | const |
|
overridevirtual |
Implements librats::Subsystem.
|
overridevirtual |
Implements librats::Subsystem.