14 : m_logger(std::move(logger)) {
16 return process_request(req);
18 m_ticket_machine = std::make_unique<impl>(m_logger, batch_size);
22 -> nuraft::ptr<nuraft::buffer> {
23 m_last_committed_idx = log_idx;
25 auto resp = blocking_call(data);
26 if(!resp.has_value()) {
45 return m_last_committed_idx;
50 nuraft::async_result<bool>::handler_type& when_done) {
51 nuraft::ptr<std::exception> except(
nullptr);
53 when_done(ret, except);
59 [[maybe_unused]]
auto success = m_ticket_machine->get_ticket_number(
std::variant< ticket_number_range_type, error_code > get_ticket_number_return_type
Return value from the ticket machine.
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 create_snapshot(nuraft::snapshot &, nuraft::async_result< bool >::handler_type &) override
Not implemented for ticket machine.
auto apply_snapshot(nuraft::snapshot &) -> bool override
Not implemented for ticket machine.
state_machine(std::shared_ptr< logging::log > logger, ticket_number_type batch_size)
Constructor.
auto last_commit_index() -> uint64_t override
Returns the most recently committed log entry index.
auto last_snapshot() -> nuraft::ptr< nuraft::snapshot > override
Not implemented for ticket machine.
void register_handler_callback(callback_type callback)
std::variant< std::monostate > request
Ticket machine RPC request type.
interface::get_ticket_number_return_type response
Ticket machine RPC response type.
uint64_t ticket_number_type
Type alias for a ticket number.