OpenCBDC Transaction Processor
Loading...
Searching...
No Matches
uhs/atomizer/sentinel/server.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_SENTINEL_SERVER_H_
7#define OPENCBDC_TX_SRC_SENTINEL_SERVER_H_
8
12#include "util/rpc/format.hpp"
13
14namespace cbdc::sentinel::rpc {
16 class server {
17 public:
22 server(
23 interface* impl, // TODO: convert sentinel::controller to
24 // contain a shared_ptr to an implementation
26
27 ~server();
28
29 server(const server&) = delete;
30 auto operator=(const server&) -> server& = delete;
31 server(server&&) = delete;
32 auto operator=(server&&) -> server& = delete;
33
34 private:
35 using callback_type = std::function<void(std::optional<response>)>;
36 using request_type = std::pair<request, callback_type>;
37
38 interface* m_impl;
39 std::unique_ptr<cbdc::rpc::async_server<request, response>> m_srv;
41
42 std::vector<std::thread> m_threads;
43
44 auto handle_request() -> bool;
45 };
46}
47
48#endif // OPENCBDC_TX_SRC_SENTINEL_SERVER_H_
Thread-safe producer-consumer FIFO queue supporting multiple concurrent producers and consumers.
Generic asynchronous RPC server.
Interface for a sentinel.
server(const server &)=delete
server(server &&)=delete
auto operator=(server &&) -> server &=delete
server(interface *impl, std::unique_ptr< cbdc::rpc::async_server< request, response > > srv)
Constructor.
auto operator=(const server &) -> server &=delete