OpenCBDC Transaction Processor
Loading...
Searching...
No Matches
parsec/ticket_machine/controller.hpp
Go to the documentation of this file.
1// Copyright (c) 2021 MIT Digital Currency Initiative,
2// Federal Reserve Bank of Boston
3// Distributed under the MIT software license, see the accompanying
4// file COPYING or http://www.opensource.org/licenses/mit-license.php.
5
6#ifndef OPENCBDC_TX_SRC_PARSEC_TICKET_MACHINE_CONTROLLER_H_
7#define OPENCBDC_TX_SRC_PARSEC_TICKET_MACHINE_CONTROLLER_H_
8
9#include "impl.hpp"
10#include "state_machine.hpp"
11#include "util/raft/node.hpp"
14
17 class controller {
18 public:
25 controller(size_t node_id,
26 network::endpoint_t server_endpoint,
27 std::vector<network::endpoint_t> raft_endpoints,
28 std::shared_ptr<logging::log> logger);
29 ~controller() = default;
30
31 controller() = delete;
32 controller(const controller&) = delete;
33 auto operator=(const controller&) -> controller& = delete;
35 auto operator=(controller&&) -> controller& = delete;
36
40 auto init() -> bool;
41
42 private:
43 auto raft_callback(nuraft::cb_func::Type type,
44 nuraft::cb_func::Param* param)
45 -> nuraft::cb_func::ReturnCode;
46
47 std::shared_ptr<logging::log> m_logger;
48
49 std::shared_ptr<state_machine> m_state_machine;
50 std::shared_ptr<raft::node> m_raft_serv;
51 std::unique_ptr<cbdc::rpc::tcp_server<raft::rpc::server>> m_server;
52
53 std::vector<network::endpoint_t> m_raft_endpoints;
54 network::endpoint_t m_server_endpoint;
55
56 static constexpr auto m_batch_size = 1000;
57 };
58}
59
60#endif
Manages a replicated ticket machine using Raft.
auto init() -> bool
Initializes the ticket machine.
auto operator=(const controller &) -> controller &=delete
controller(const controller &)=delete
auto operator=(controller &&) -> controller &=delete
std::pair< ip_address, port_number_t > endpoint_t
[host name, port number].
Definition socket.hpp:19