OpenCBDC Transaction Processor
Loading...
Searching...
No Matches
cbdc::locking_shard::state_machine Class Reference

Raft state machine for handling locking shard RPC requests. More...

#include <state_machine.hpp>

Inheritance diagram for cbdc::locking_shard::state_machine:
Collaboration diagram for cbdc::locking_shard::state_machine:

Public Member Functions

 state_machine (const std::pair< uint8_t, uint8_t > &output_range, std::shared_ptr< logging::log > logger, size_t completed_txs_cache_size, const std::string &preseed_file, config::options opts)
 Constructor.
 
auto commit (uint64_t log_idx, nuraft::buffer &data) -> nuraft::ptr< nuraft::buffer > override
 Commit the given raft log entry at the given log index, and return the result.
 
void commit_config (nuraft::ulong log_idx, nuraft::ptr< nuraft::cluster_config > &) override
 Handler for the raft cluster configuration changes.
 
auto apply_snapshot (nuraft::snapshot &) -> bool override
 Not implemented for locking shard.
 
auto last_snapshot () -> nuraft::ptr< nuraft::snapshot > override
 Not implemented for locking shard.
 
auto last_commit_index () -> uint64_t override
 Returns the most recently committed log entry index.
 
void create_snapshot (nuraft::snapshot &, nuraft::async_result< bool >::handler_type &) override
 Not implemented for locking shard.
 
auto get_shard_instance () -> std::shared_ptr< cbdc::locking_shard::locking_shard >
 Returns a pointer to the locking shard instance managed by this state machine.
 
- Public Member Functions inherited from cbdc::rpc::blocking_server< rpc::request, rpc::response, nuraft::buffer &, nuraft::ptr< nuraft::buffer > >
 blocking_server ()=default
 
 blocking_server (blocking_server &&) noexcept=default
 
 blocking_server (const blocking_server &)=default
 
auto operator= (blocking_server &&) noexcept -> blocking_server &=default
 
auto operator= (const blocking_server &) -> blocking_server &=default
 
 ~blocking_server () override=default
 
void register_handler_callback (callback_type callback)
 Register a handler callback function for processing requests and returning responses.
 
- Public Member Functions inherited from cbdc::rpc::server< rpc::request, rpc::response, nuraft::buffer &, nuraft::ptr< nuraft::buffer > >
 server ()=default
 
 server (server &&) noexcept=default
 
 server (const server &)=default
 
auto operator= (server &&) noexcept -> server &=default
 
auto operator= (const server &) -> server &=default
 
virtual ~server ()=default
 

Additional Inherited Members

- Public Types inherited from cbdc::rpc::blocking_server< rpc::request, rpc::response, nuraft::buffer &, nuraft::ptr< nuraft::buffer > >
using callback_type
 Handler callback function type which accepts a request and returns a response, or returns std::nullopt if it encounters an error while processing the request.
 
- Public Types inherited from cbdc::rpc::server< rpc::request, rpc::response, nuraft::buffer &, nuraft::ptr< nuraft::buffer > >
using request_type
 
using response_type
 
- Static Public Attributes inherited from cbdc::rpc::blocking_server< rpc::request, rpc::response, nuraft::buffer &, nuraft::ptr< nuraft::buffer > >
static constexpr handler_type handler
 
- Protected Member Functions inherited from cbdc::rpc::blocking_server< rpc::request, rpc::response, nuraft::buffer &, nuraft::ptr< nuraft::buffer > >
auto blocking_call (nuraft::buffer &request_buf) -> std::optional< nuraft::ptr< nuraft::buffer > >
 Synchronously deserializes an RPC request, calls the request handler function, then serializes and returns the response.
 
- Protected Member Functions inherited from cbdc::rpc::server< rpc::request, rpc::response, nuraft::buffer &, nuraft::ptr< nuraft::buffer > >
auto deserialize_request (BufType &request_buf) -> std::optional< request_type >
 Deserializes a request from a buffer.
 
auto serialize_response (header request_header, std::optional< R > response_payload) -> nuraft::ptr< nuraft::buffer >
 Serialize a response into a buffer.
 
auto make_failure_response (cbdc::buffer &request_buf) -> std::optional< cbdc::buffer >
 Serialize a failure response buffer from the given request buffer.
 

Detailed Description

Raft state machine for handling locking shard RPC requests.

Definition at line 18 of file uhs/twophase/locking_shard/state_machine.hpp.

Constructor & Destructor Documentation

◆ state_machine()

cbdc::locking_shard::state_machine::state_machine ( const std::pair< uint8_t, uint8_t > & output_range,
std::shared_ptr< logging::log > logger,
size_t completed_txs_cache_size,
const std::string & preseed_file,
config::options opts )

Constructor.

Parameters
output_rangeinclusive range of hash prefixes this shard is responsible for.
loggerlog instance.
completed_txs_cache_sizenumber of confirmed TX IDs to keep before evicting the oldest TX ID.
preseed_filepath to file containing shard pre-seeding data or empty string to disable pre-seeding.
optsconfiguration options.

Definition at line 15 of file uhs/twophase/locking_shard/state_machine.cpp.

References cbdc::rpc::blocking_server< rpc::request, rpc::response, nuraft::buffer &, nuraft::ptr< nuraft::buffer > >::register_handler_callback().

Here is the call graph for this function:

Member Function Documentation

◆ apply_snapshot()

auto cbdc::locking_shard::state_machine::apply_snapshot ( nuraft::snapshot & ) -> bool
override

Not implemented for locking shard.

Returns
false.

Definition at line 56 of file uhs/twophase/locking_shard/state_machine.cpp.

◆ commit()

auto cbdc::locking_shard::state_machine::commit ( uint64_t log_idx,
nuraft::buffer & data ) -> nuraft::ptr<nuraft::buffer>
override

Commit the given raft log entry at the given log index, and return the result.

Parameters
log_idxraft log index of the log entry.
dataserialized RPC request.
Returns
serialized RPC response or nullptr if there was an error processing the request.

Definition at line 33 of file uhs/twophase/locking_shard/state_machine.cpp.

◆ commit_config()

void cbdc::locking_shard::state_machine::commit_config ( nuraft::ulong log_idx,
nuraft::ptr< nuraft::cluster_config > &  )
override

Handler for the raft cluster configuration changes.

Parameters
log_idxRaft log number of the configuration change.

Definition at line 49 of file uhs/twophase/locking_shard/state_machine.cpp.

◆ create_snapshot()

void cbdc::locking_shard::state_machine::create_snapshot ( nuraft::snapshot & ,
nuraft::async_result< bool >::handler_type & when_done )
override

Not implemented for locking shard.

Definition at line 68 of file uhs/twophase/locking_shard/state_machine.cpp.

◆ get_shard_instance()

auto cbdc::locking_shard::state_machine::get_shard_instance ( ) -> std::shared_ptr<cbdc::locking_shard::locking_shard>

Returns a pointer to the locking shard instance managed by this state machine.

Returns
locking shard instance.

Definition at line 76 of file uhs/twophase/locking_shard/state_machine.cpp.

◆ last_commit_index()

auto cbdc::locking_shard::state_machine::last_commit_index ( ) -> uint64_t
override

Returns the most recently committed log entry index.

Returns
log entry index.

Definition at line 64 of file uhs/twophase/locking_shard/state_machine.cpp.

◆ last_snapshot()

auto cbdc::locking_shard::state_machine::last_snapshot ( ) -> nuraft::ptr<nuraft::snapshot>
override

Not implemented for locking shard.

Returns
nullptr.

Definition at line 60 of file uhs/twophase/locking_shard/state_machine.cpp.


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