1 #ifndef ISIMUD_EXCHANGES_COMMON_EXCHANGE_TO_CLIENT_PROCESSOR_HPP
2 #define ISIMUD_EXCHANGES_COMMON_EXCHANGE_TO_CLIENT_PROCESSOR_HPP
22 #include "core/jthread.hpp"
23 #include "core/ttypes.hpp"
25 #include <boost/exception_ptr.hpp>
26 #include <boost/mpl/assert.hpp>
38 template<
class ClientCxnPtr,
class EchgCxn>
39 class exchange_to_client_processor final {
41 using client_connection_t=ClientCxnPtr;
42 using exchg_link_t=EchgCxn;
43 using conn_pol_t=
typename exchg_link_t::conn_pol_t;
44 using exchange_msg_details_t=
typename exchg_link_t::msg_details_t;
45 using proc_rules_t=
typename exchg_link_t::proc_rules_t;
46 using socket_t=
typename exchg_link_t::socket_t;
47 using socket_priority=
typename exchg_link_t::socket_priority;
48 using ctor_args=
typename exchg_link_t::ctor_args;
50 template<
class LatencyTimestamps>
51 exchange_to_client_processor(
std::atomic<
bool> &e, ctor_args
const &exchange_cxn_details, socket_priority to_exchg_priority, proc_rules_t
const &proc_rules, LatencyTimestamps ×tamps);
55 socket_t &
socket()
noexcept(
true);
64 exchg_link_t exchg_link;
65 flow exchange_to_client;
68 template<
class ClientCxnPtr,
class ServerCxn>
70 operator<<(
std::ostream &os, exchange_to_client_processor<ClientCxnPtr, ServerCxn>
const &s)
noexcept(
false);