Back to Site
Loading...
Searching...
No Matches
librats::StorageManager Class Referencefinal

StorageManager - Distributed key-value storage with peer synchronization. More...

#include <storage.h>

Inheritance diagram for librats::StorageManager:
[legend]
Collaboration diagram for librats::StorageManager:
[legend]

Public Member Functions

 StorageManager (const StorageConfig &config=StorageConfig())
 Constructor.
 
 ~StorageManager () override
 Destructor - saves data and cleans up resources.
 
 StorageManager (const StorageManager &)=delete
 
StorageManageroperator= (const StorageManager &)=delete
 
void attach (NodeContext &ctx) override
 
void start () override
 
void stop () override
 
void set_config (const StorageConfig &config)
 Replace the configuration.
 
const StorageConfigget_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::Jsonget_json (const std::string &key) const
 
std::optional< StorageValueTypeget_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
 

Detailed Description

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).

Definition at line 257 of file storage.h.

Constructor & Destructor Documentation

◆ StorageManager() [1/2]

librats::StorageManager::StorageManager ( const StorageConfig config = StorageConfig())
explicit

Constructor.

Parameters
configStorage 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.

◆ ~StorageManager()

librats::StorageManager::~StorageManager ( )
override

Destructor - saves data and cleans up resources.

◆ StorageManager() [2/2]

librats::StorageManager::StorageManager ( const StorageManager )
delete

Member Function Documentation

◆ attach()

void librats::StorageManager::attach ( NodeContext ctx)
overridevirtual

Implements librats::Subsystem.

◆ clear()

void librats::StorageManager::clear ( )

◆ compact()

size_t librats::StorageManager::compact ( )

◆ empty()

bool librats::StorageManager::empty ( ) const

◆ get_binary()

std::optional< std::vector< uint8_t > > librats::StorageManager::get_binary ( const std::string &  key) const

◆ get_config()

const StorageConfig & librats::StorageManager::get_config ( ) const

◆ get_double()

std::optional< double > librats::StorageManager::get_double ( const std::string &  key) const

◆ get_int()

std::optional< int64_t > librats::StorageManager::get_int ( const std::string &  key) const

◆ get_json()

std::optional< librats::Json > librats::StorageManager::get_json ( const std::string &  key) const

◆ get_statistics()

StorageStatistics librats::StorageManager::get_statistics ( ) const

◆ get_statistics_json()

librats::Json librats::StorageManager::get_statistics_json ( ) const

◆ get_string()

std::optional< std::string > librats::StorageManager::get_string ( const std::string &  key) const

◆ get_sync_status()

StorageSyncStatus librats::StorageManager::get_sync_status ( ) const

◆ get_type()

std::optional< StorageValueType > librats::StorageManager::get_type ( const std::string &  key) const

◆ has()

bool librats::StorageManager::has ( const std::string &  key) const

◆ is_synced()

bool librats::StorageManager::is_synced ( ) const

◆ keys()

std::vector< std::string > librats::StorageManager::keys ( ) const

◆ keys_with_prefix()

std::vector< std::string > librats::StorageManager::keys_with_prefix ( const std::string &  prefix) const

◆ load()

bool librats::StorageManager::load ( )

◆ operator=()

StorageManager & librats::StorageManager::operator= ( const StorageManager )
delete

◆ put() [1/4]

bool librats::StorageManager::put ( const std::string &  key,
const std::string &  value 
)

◆ put() [2/4]

bool librats::StorageManager::put ( const std::string &  key,
const std::vector< uint8_t > &  value 
)

◆ put() [3/4]

bool librats::StorageManager::put ( const std::string &  key,
double  value 
)

◆ put() [4/4]

bool librats::StorageManager::put ( const std::string &  key,
int64_t  value 
)

◆ put_json()

bool librats::StorageManager::put_json ( const std::string &  key,
const librats::Json value 
)

◆ remove()

bool librats::StorageManager::remove ( const std::string &  key)

◆ request_sync()

bool librats::StorageManager::request_sync ( )

Request a full snapshot from one connected peer.

◆ save()

bool librats::StorageManager::save ( )

◆ set_change_callback()

void librats::StorageManager::set_change_callback ( StorageChangeCallback  callback)

◆ set_config()

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.

◆ set_sync_complete_callback()

void librats::StorageManager::set_sync_complete_callback ( StorageSyncCompleteCallback  callback)

◆ size()

size_t librats::StorageManager::size ( ) const

◆ start()

void librats::StorageManager::start ( )
overridevirtual

Implements librats::Subsystem.

◆ stop()

void librats::StorageManager::stop ( )
overridevirtual

Implements librats::Subsystem.


The documentation for this class was generated from the following file: