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