9 #include "CommsBroker.hpp"
10 #include "CommsInterface.hpp"
20 template<
class COMMS,
class BrokerT>
23 static_assert(std::is_base_of<CommsInterface, COMMS>::value,
24 "COMMS object must be a CommsInterface Object");
25 static_assert(std::is_base_of<BrokerBase, BrokerT>::value,
26 "Broker must be an object with a base of BrokerBase");
30 template<
class COMMS,
class BrokerT>
33 static_assert(std::is_base_of<CommsInterface, COMMS>::value,
34 "COMMS object must be a CommsInterface Object");
35 static_assert(std::is_base_of<BrokerBase, BrokerT>::value,
36 "Broker must be an object with a base of BrokerBase");
40 template<
class COMMS,
class BrokerT>
43 static_assert(std::is_base_of<CommsInterface, COMMS>::value,
44 "COMMS object must be a CommsInterface Object");
45 static_assert(std::is_base_of<BrokerBase, BrokerT>::value,
46 "Broker must be an object with a base of BrokerBase");
49 template<
class COMMS,
class BrokerT>
52 comms = std::make_unique<COMMS>();
57 template<
class COMMS,
class BrokerT>
62 while (!disconnectionStage.compare_exchange_weak(exp, 3)) {
67 std::this_thread::sleep_for(std::chrono::milliseconds(50));
74 template<
class COMMS,
class BrokerT>
80 template<
class COMMS,
class BrokerT>
81 void CommsBroker<COMMS, BrokerT>::commDisconnect()
84 if (disconnectionStage.compare_exchange_strong(exp, 1)) {
86 disconnectionStage = 2;
90 template<
class COMMS,
class BrokerT>
91 bool CommsBroker<COMMS, BrokerT>::tryReconnect()
93 return comms->reconnect();
96 template<
class COMMS,
class BrokerT>
97 void CommsBroker<COMMS, BrokerT>::transmit(route_id rid,
const ActionMessage& cmd)
99 comms->transmit(rid, cmd);
102 template<
class COMMS,
class BrokerT>
103 void CommsBroker<COMMS, BrokerT>::transmit(route_id rid, ActionMessage&& cmd)
105 comms->transmit(rid, std::move(cmd));
108 template<
class COMMS,
class BrokerT>
109 void CommsBroker<COMMS, BrokerT>::addRoute(route_id rid,
111 std::string_view routeInfo)
113 comms->addRoute(rid, routeInfo);
116 template<
class COMMS,
class BrokerT>
117 void CommsBroker<COMMS, BrokerT>::removeRoute(route_id rid)
119 comms->removeRoute(rid);
122 template<
class COMMS,
class BrokerT>
Definition: ActionMessage.hpp:30
void joinAllThreads()
Definition: BrokerBase.cpp:93
std::atomic< bool > haltOperations
flag indicating that no further message should be processed
Definition: BrokerBase.hpp:80
std::function< void(int, std::string_view, std::string_view)> getLoggingCallback() const
Definition: BrokerBase.cpp:86
void addActionMessage(const ActionMessage &message)
Definition: BrokerBase.cpp:590
Definition: CommsBroker.hpp:21
~CommsBroker()
Definition: CommsBroker_impl.hpp:58
COMMS * getCommsObjectPointer()
Definition: CommsBroker_impl.hpp:123
CommsBroker() noexcept
Definition: CommsBroker_impl.hpp:21
the main namespace for the helics co-simulation library User functions will be in the helics namespac...
Definition: AsyncFedCallInfo.hpp:14