9#include "nlohmann/json.hpp"
22template<
typename Datatype>
27 receiver->add_callback(callback);
30template<
typename Datatype>
31inline std::shared_ptr<ReceiverConcept<Datatype>>
37 id.data_type = data_type;
41template<
typename Datatype>
42inline std::shared_ptr<ReceiverConcept<Datatype>>
48 id.data_type = data_type;
54template<
typename Datatype>
55inline std::shared_ptr<ReceiverConcept<Datatype>>
66 static std::mutex dt_receiver_mutex;
67 std::lock_guard<std::mutex> lk(dt_receiver_mutex);
71 TLOG(
"IOManager") <<
"Creating QueueReceiverModel for uid " <<
id.uid <<
", datatype " <<
id.data_type;
72 m_receivers[id] = std::make_shared<QueueReceiverModel<Datatype>>(id);
74 TLOG(
"IOManager") <<
"Creating NetworkReceiverModel for uid " <<
id.uid <<
", datatype " <<
id.data_type
75 <<
" in session " <<
id.session;
76 m_receivers[id] = std::make_shared<NetworkReceiverModel<Datatype>>(id);
79 return std::dynamic_pointer_cast<ReceiverConcept<Datatype>>(
m_receivers[id]);
82template<
typename Datatype>
83inline std::shared_ptr<SenderConcept<Datatype>>
89 id.data_type = data_type;
94template<
typename Datatype>
95inline std::shared_ptr<SenderConcept<Datatype>>
106 static std::mutex dt_sender_mutex;
107 std::lock_guard<std::mutex> lk(dt_sender_mutex);
111 TLOG(
"IOManager") <<
"Creating QueueSenderModel for uid " <<
id.uid <<
", datatype " <<
id.data_type;
112 m_senders[id] = std::make_shared<QueueSenderModel<Datatype>>(id);
114 TLOG(
"IOManager") <<
"Creating NetworkSenderModel for uid " <<
id.uid <<
", datatype " <<
id.data_type
115 <<
" in session " <<
id.session;
116 m_senders[id] = std::make_shared<NetworkSenderModel<Datatype>>(id);
119 return std::dynamic_pointer_cast<SenderConcept<Datatype>>(
m_senders[id]);
122template<
typename Datatype>
127 receiver->add_callback(callback);
130template<
typename Datatype>
135 receiver->add_callback(callback);
138template<
typename Datatype>
143 receiver->remove_callback();
146template<
typename Datatype>
151 receiver->remove_callback();
153template<
typename Datatype>
158 receiver->remove_callback();
164[[maybe_unused]]
static std::shared_ptr<iomanager::IOManager>
170template<
typename Datatype>
171static std::shared_ptr<iomanager::SenderConcept<Datatype>>
177template<
typename Datatype>
178static std::shared_ptr<iomanager::ReceiverConcept<Datatype>>
184template<
typename Datatype>
185static std::shared_ptr<iomanager::SenderConcept<Datatype>>
191template<
typename Datatype>
192static std::shared_ptr<iomanager::ReceiverConcept<Datatype>>
static std::shared_ptr< IOManager > get()
void add_callback(ConnectionId const &id, std::function< void(Datatype &)> callback)
std::shared_ptr< SenderConcept< Datatype > > get_sender(ConnectionId id)
void remove_callback(ConnectionId const &id)
std::shared_ptr< ReceiverConcept< Datatype > > get_receiver(ConnectionId id)
static QueueRegistry & get()
Get a handle to the QueueRegistry.
static std::shared_ptr< iomanager::SenderConcept< Datatype > > get_iom_sender(iomanager::ConnectionId const &id)
Unknown serialization Cannot deserialize std::string datatype_to_string()
static std::shared_ptr< iomanager::IOManager > get_iomanager()
static std::shared_ptr< iomanager::ReceiverConcept< Datatype > > get_iom_receiver(iomanager::ConnectionId const &id)