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

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.

Referenced by StorageManager(), and operator=().

◆ ~StorageManager()

librats::StorageManager::~StorageManager ( )
override

Destructor - saves data and cleans up resources.

◆ StorageManager() [2/2]

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

References StorageManager().

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

References StorageManager().

◆ 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: