OpenCBDC Transaction Processor
|
Raft state machine for handling locking shard RPC requests. More...
#include <state_machine.hpp>
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. | |
![]() | |
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. | |
![]() | |
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 | |
![]() | |
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. | |
![]() | |
using | request_type |
using | response_type |
![]() | |
static constexpr handler_type | handler |
![]() | |
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. | |
![]() | |
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. | |
Raft state machine for handling locking shard RPC requests.
Definition at line 18 of file uhs/twophase/locking_shard/state_machine.hpp.
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.
output_range | inclusive range of hash prefixes this shard is responsible for. |
logger | log instance. |
completed_txs_cache_size | number of confirmed TX IDs to keep before evicting the oldest TX ID. |
preseed_file | path to file containing shard pre-seeding data or empty string to disable pre-seeding. |
opts | configuration options. |
Definition at line 15 of file uhs/twophase/locking_shard/state_machine.cpp.
|
override |
Not implemented for locking shard.
Definition at line 56 of file uhs/twophase/locking_shard/state_machine.cpp.
|
override |
Commit the given raft log entry at the given log index, and return the result.
log_idx | raft log index of the log entry. |
data | serialized RPC request. |
Definition at line 33 of file uhs/twophase/locking_shard/state_machine.cpp.
|
override |
Handler for the raft cluster configuration changes.
log_idx | Raft log number of the configuration change. |
Definition at line 49 of file uhs/twophase/locking_shard/state_machine.cpp.
|
override |
Not implemented for locking shard.
Definition at line 68 of file uhs/twophase/locking_shard/state_machine.cpp.
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.
Definition at line 76 of file uhs/twophase/locking_shard/state_machine.cpp.
|
override |
Returns the most recently committed log entry index.
Definition at line 64 of file uhs/twophase/locking_shard/state_machine.cpp.
|
override |
Not implemented for locking shard.
Definition at line 60 of file uhs/twophase/locking_shard/state_machine.cpp.