src/crdt/crdt_callback_manager.hpp¶
CRDT callback manager header for when an element gets added/removed. More...
Namespaces¶
| Name |
|---|
| sgns |
| sgns::crdt |
Classes¶
| Name | |
|---|---|
| class | sgns::crdt::CRDTCallbackManager |
Detailed Description¶
CRDT callback manager header for when an element gets added/removed.
Date: 2025-09-05 Henrique A. Klein ([email protected])
Source code¶
#pragma once
#include <functional>
#include <string>
#include <unordered_map>
#include <shared_mutex>
#include "base/buffer.hpp"
#include "base/logger.hpp"
namespace sgns::crdt
{
class CRDTCallbackManager
{
public:
using NewDataPair = std::pair<std::string, base::Buffer>;
using NewDataCallback = std::function<void( NewDataPair new_data, std::string cid )>;
using NewDataCallbackRegistry = std::unordered_map<std::string, NewDataCallback>;
using DeletedDataCallback = std::function<void( std::string deleted_key, std::string cid )>;
using DeletedDataCallbackRegistry = std::unordered_map<std::string, DeletedDataCallback>;
explicit CRDTCallbackManager();
~CRDTCallbackManager();
bool RegisterNewDataCallback( const std::string &pattern, NewDataCallback callback );
bool RegisterDeletedDataCallback( const std::string &pattern, DeletedDataCallback callback );
void UnregisterNewDataCallback( const std::string &pattern );
void UnregisterDeletedDataCallback( const std::string &pattern );
void PutDataCallback( const std::string &key, const base::Buffer &value, const std::string &cid );
void DeleteDataCallback( const std::string &deleted_key, const std::string &cid );
private:
std::shared_mutex new_data_callback_registry_mutex_;
NewDataCallbackRegistry new_data_callback_registry_;
std::shared_mutex
deleted_data_callback_registry_mutex_;
DeletedDataCallbackRegistry deleted_data_callback_registry_;
base::Logger logger_ = base::createLogger( "CRDTCallbackManager" );
};
}
Updated on 2026-03-04 at 13:10:44 -0800