 |
helics
2.8.1
|
9 #include "NetworkBrokerData.hpp"
10 #include "gmlc/concurrency/TriggerVariable.hpp"
11 #include "gmlc/concurrency/TripWire.hpp"
12 #include "gmlc/containers/BlockingPriorityQueue.hpp"
13 #include "helics/core/ActionMessage.hpp"
42 void loadTargetInfo(
const std::string& localTarget,
43 const std::string& brokerTarget,
53 void addRoute(
route_id rid,
const std::string& routeInfo);
68 void setName(
const std::string& commName);
72 void setRequireBrokerConnection(
bool requireBrokerConnection);
76 void setCallback(std::function<
void(
ActionMessage&&)> callback);
79 void setLoggingCallback(
80 std::function<
void(
int level,
const std::string& name,
const std::string& message)>
84 void setMessageSize(
int maxMsgSize,
int maxCount);
87 bool isConnected()
const;
92 void setTimeout(std::chrono::milliseconds timeOut);
94 virtual void setFlag(
const std::string& flag,
bool val);
96 void setServerMode(
bool serverActive);
99 void logWarning(
const std::string& message)
const;
101 void logError(
const std::string& message)
const;
103 void logMessage(
const std::string& message)
const;
118 std::atomic<connection_status> rx_status{
119 connection_status::startup};
121 gmlc::concurrency::TriggerVariable rxTrigger;
130 std::string randomID;
131 std::atomic<connection_status> tx_status{
132 connection_status::startup};
133 gmlc::concurrency::TriggerVariable txTrigger;
134 std::atomic<bool> operating{
false};
135 const bool singleThread{
false};
138 bool mRequireBrokerConnection{
140 bool serverMode{
true};
141 bool autoBroker{
false};
142 bool useJsonSerialization{
false};
144 std::chrono::milliseconds connectionTimeout{4000};
145 int maxMessageSize = 16 * 1024;
146 int maxMessageCount = 512;
147 std::atomic<bool> requestDisconnect{
false};
150 std::function<void(
int level,
const std::string& name,
const std::string& message)>
152 gmlc::containers::BlockingPriorityQueue<std::pair<route_id, ActionMessage>>
156 std::atomic<bool> disconnecting{
161 std::thread queue_transmitter;
162 std::thread queue_watcher;
163 std::mutex threadSyncLock;
164 virtual void queue_rx_function() = 0;
165 virtual void queue_tx_function() = 0;
166 virtual void closeTransmitter();
167 virtual void closeReceiver();
168 virtual void reconnectTransmitter();
169 virtual void reconnectReceiver();
171 void setTxStatus(connection_status txStatus);
172 void setRxStatus(connection_status rxStatus);
173 connection_status getRxStatus()
const {
return rx_status.load(); }
174 connection_status getTxStatus()
const {
return tx_status.load(); }
178 void propertyUnLock();
180 void join_tx_rx_thread();
185 gmlc::concurrency::TripWireDetector
189 namespace CommFactory {
193 virtual std::unique_ptr<CommsInterface> build() = 0;
197 template<
class CommTYPE>
200 static_assert(std::is_base_of<CommsInterface, CommTYPE>::value,
201 "Type does not inherit from helics::CommsInterface");
203 using comm_build_type = CommTYPE;
204 virtual std::unique_ptr<CommsInterface> build()
override
206 return std::make_unique<CommTYPE>();
211 void defineCommBuilder(std::shared_ptr<CommBuilder> cb,
212 const std::string& commTypeName,
216 template<
class CommTYPE>
217 std::shared_ptr<CommBuilder> addCommType(
const std::string& commTypeName,
int code)
219 auto bld = std::make_shared<CommTypeBuilder<CommTYPE>>();
220 std::shared_ptr<CommBuilder> cbld = std::static_pointer_cast<CommBuilder>(bld);
221 defineCommBuilder(cbld, commTypeName, code);
225 std::unique_ptr<CommsInterface> create(
core_type type);
226 std::unique_ptr<CommsInterface> create(
const std::string& type);
233 std::atomic<X>& aref;
239 aref(var), fval(std::move(finalValue)), expectedValue(std::move(expValue))
std::string brokerTargetAddress
the base for the broker address
Definition: CommsInterface.hpp:125
server_mode_options server_mode
setup a server mode
Definition: NetworkBrokerData.hpp:69
std::string name
the name of the object
Definition: CommsInterface.hpp:123
core_type
Definition: core-types.hpp:37
int maxMessageSize
maximum message size
Definition: NetworkBrokerData.hpp:56
std::string localInterface
the interface to use for the local connection
Definition: NetworkBrokerData.hpp:48
thread_generation
Definition: CommsInterface.hpp:30
int maxMessageCount
maximum message count
Definition: NetworkBrokerData.hpp:57
@ local
just open local ports
bool autobroker
flag for specifying an automatic broker generation
Definition: NetworkBrokerData.hpp:63
std::string brokerInitString
the initialization string for any automatically generated broker
Definition: CommsInterface.hpp:128
Definition: NetworkBrokerData.hpp:36
Definition: ActionMessage.hpp:29
@ helics_log_level_warning
Definition: helics_enums.h:169
gmlc::containers::BlockingPriorityQueue< std::pair< route_id, ActionMessage > > txQueue
set of messages waiting to be transmitted
Definition: CommsInterface.hpp:153
@ helics_log_level_error
Definition: helics_enums.h:167
interface_networks
Definition: NetworkBrokerData.hpp:16
Definition: CommsInterface.hpp:198
Definition: global_federate_id.hpp:171
std::function< void(ActionMessage &&)> ActionCallback
the callback for what to do with a received message
Definition: CommsInterface.hpp:149
@ helics_log_level_interfaces
Definition: helics_enums.h:176
std::string payload
Definition: ActionMessage.hpp:44
int32_t messageID
8 – message ID for a variety of purposes
Definition: ActionMessage.hpp:35
void setExtraData(int32_t data)
Definition: ActionMessage.hpp:157
std::string brokerInitString
a string containing arguments for the broker initialization
Definition: NetworkBrokerData.hpp:49
Definition: CommsInterface.hpp:191
std::string brokerAddress
the address or domain name of the broker
Definition: NetworkBrokerData.hpp:47
std::string localTargetAddress
the base for the receive address
Definition: CommsInterface.hpp:124
std::string brokerName
the identifier for the broker
Definition: CommsInterface.hpp:126
connection_status
Definition: CommsInterface.hpp:108
Definition: CommsInterface.hpp:26
std::shared_ptr< Broker > create(core_type type, const std::string &configureString)
Definition: BrokerFactory.cpp:100
the main namespace for the helics co-simulation library User functions will be in the helics namespac...
Definition: AsyncFedCallInfo.hpp:14
@ error
only print errors
Definition: loggingHelper.hpp:22
Definition: CommsInterface.hpp:231
std::function< void(int level, const std::string &name, const std::string &message)> loggingCallback
callback for logging
Definition: CommsInterface.hpp:151
constexpr base_type baseValue() const
Definition: global_federate_id.hpp:179
std::string connectionAddress
the address for connecting
Definition: NetworkBrokerData.hpp:50
std::string brokerName
the identifier for the broker
Definition: NetworkBrokerData.hpp:46
bool isPriorityCommand(const ActionMessage &command) noexcept
Definition: ActionMessage.hpp:232
const std::string & getRandomID() const
Definition: CommsInterface.hpp:182