helics  3.0.1
CoreBroker.hpp
1 /*
2 Copyright (c) 2017-2021,
3 Battelle Memorial Institute; Lawrence Livermore National Security, LLC; Alliance for Sustainable
4 Energy, LLC. See the top-level NOTICE for additional details. All rights reserved.
5 SPDX-License-Identifier: BSD-3-Clause
6 */
7 #pragma once
8 
9 #include "../common/JsonBuilder.hpp"
10 #include "ActionMessage.hpp"
11 #include "BasicHandleInfo.hpp"
12 #include "Broker.hpp"
13 #include "BrokerBase.hpp"
14 #include "FederateIdExtra.hpp"
15 #include "HandleManager.hpp"
16 #include "TimeDependencies.hpp"
17 #include "UnknownHandleManager.hpp"
18 #include "gmlc/concurrency/DelayedObjects.hpp"
19 #include "gmlc/concurrency/TriggerVariable.hpp"
20 #include "gmlc/containers/AirLock.hpp"
21 #include "gmlc/containers/DualMappedVector.hpp"
22 #include "gmlc/containers/SimpleQueue.hpp"
23 
24 #include <any>
25 #include <array>
26 #include <atomic>
27 #include <deque>
28 #include <functional>
29 #include <map>
30 #include <memory>
31 #include <string>
32 #include <thread>
33 #include <tuple>
34 #include <unordered_map>
35 #include <utility>
36 #include <vector>
37 
38 namespace helics {
39 
41 enum class connection_state : std::uint8_t {
42  connected = 0,
43  init_requested = 1,
44  operating = 2,
45  error = 40,
46  request_disconnect = 48,
47  disconnected = 50
48 };
49 
51 class BasicFedInfo {
52  public:
53  const std::string name;
57  connection_state state{connection_state::connected};
58  bool nonCounting{false}; // indicator the federate shouldn't count toward limits or total
59  explicit BasicFedInfo(const std::string& fedname): name(fedname) {}
60 };
61 
64  public:
65  const std::string name;
66 
70 
72  connection_state::connected};
73 
75  false};
76  bool _core{false};
77  bool _nonLocal{false};
78  bool _route_key{false};
79  bool _sent_disconnect_ack{false};
80  bool _disable_ping{false};
81  bool _observer{false}; // indicator that the broker is an observer
82  // 1 byte gap
83  std::string routeInfo;
84  explicit BasicBrokerInfo(std::string_view brokerName): name(brokerName) {}
85 };
86 
87 class TimeCoordinator;
88 class Logger;
89 class TimeoutMonitor;
90 
95 class CoreBroker: public Broker, public BrokerBase {
96  protected:
97  bool _gateway = false;
98  private:
99  std::atomic<bool> _isRoot{false};
100  bool isRootc{false};
101  bool connectionEstablished{false};
102  int routeCount = 1;
103  gmlc::containers::DualMappedVector<BasicFedInfo, std::string, GlobalFederateId>
104  _federates;
105  gmlc::containers::DualMappedVector<BasicBrokerInfo, std::string, GlobalBrokerId>
106  _brokers;
107  std::string
108  previous_local_broker_identifier;
109 
110  HandleManager handles;
111  UnknownHandleManager unknownHandles;
112  std::vector<std::pair<std::string, GlobalFederateId>>
113  delayedDependencies;
114  std::unordered_map<GlobalFederateId, LocalFederateId>
115  global_id_translation;
116  std::unordered_map<GlobalFederateId, route_id>
117  routing_table;
118  std::unordered_map<std::string, route_id>
119  knownExternalEndpoints;
120  std::unordered_map<std::string, std::string> global_values;
122  std::mutex name_mutex_;
123  std::atomic<int> queryCounter{1}; // counter for active queries going to the local API
124  gmlc::concurrency::DelayedObjects<std::string> activeQueries;
125  std::vector<std::tuple<fileops::JsonMapBuilder, std::vector<ActionMessage>, bool>> mapBuilders;
128  std::deque<std::pair<int32_t, decltype(std::chrono::steady_clock::now())>> queryTimeouts;
129 
130  std::vector<ActionMessage> earlyMessages;
131  gmlc::concurrency::TriggerVariable disconnection;
132  std::unique_ptr<TimeoutMonitor>
133  timeoutMon;
134  std::atomic<uint16_t> nextAirLock{0};
135  std::array<gmlc::containers::AirLock<std::any>, 3>
136  dataAirlocks;
137  private:
141  virtual void processCommand(ActionMessage&& command) override;
147  void processPriorityCommand(ActionMessage&& command) override;
148 
150  void processBrokerConfigureCommands(ActionMessage& cmd);
151 
152  gmlc::containers::SimpleQueue<ActionMessage>
153  delayTransmitQueue;
154  /* function to transmit the delayed messages*/
156  void transmitDelayedMessages();
160  void routeMessage(ActionMessage& cmd, GlobalFederateId dest);
161  void routeMessage(ActionMessage&& cmd, GlobalFederateId dest);
164  void routeMessage(const ActionMessage& cmd);
165  void routeMessage(ActionMessage&& cmd);
167  void transmitToParent(ActionMessage&& cmd);
169  void propagateError(ActionMessage&& cmd);
171  void broadcast(ActionMessage& cmd);
172 
173  route_id fillMessageRouteInformation(ActionMessage& mess);
174 
176  void executeInitializationOperations();
178  uint16_t getNextAirlockIndex();
181  bool verifyBrokerKey(ActionMessage& mess) const;
184  bool verifyBrokerKey(const std::string& key) const;
185 
186  public:
189  virtual bool connect() override final;
192  virtual void disconnect() override final;
194  void unregister();
199  virtual void processDisconnect(bool skipUnregister = false) override final;
201  virtual bool isConnected() const override final;
204  virtual void setAsRoot() override final;
207  virtual bool isRoot() const override final { return _isRoot; };
208 
209  virtual bool isOpenToNewFederates() const override;
210 
211  virtual void
212  setLoggingCallback(const std::function<void(int, std::string_view, std::string_view)>&
213  logFunction) override final;
214 
215  virtual bool waitForDisconnect(
216  std::chrono::milliseconds msToWait = std::chrono::milliseconds(0)) const override final;
217 
218  virtual void setTimeBarrier(Time barrierTime) override final;
219 
220  virtual void clearTimeBarrier() override final;
221 
222  virtual void globalError(int32_t errorCode, const std::string& errorString) override final;
223 
224  private:
227  virtual bool brokerConnect() = 0;
230  virtual void brokerDisconnect() = 0;
231 
232  protected:
239  virtual void transmit(route_id route, const ActionMessage& command) = 0;
247  virtual void transmit(route_id route, ActionMessage&& command) = 0;
256  virtual void addRoute(route_id rid, int interfaceId, const std::string& routeInfo) = 0;
260  virtual void removeRoute(route_id rid) = 0;
261 
262  public:
265  explicit CoreBroker(bool setAsRootBroker = false) noexcept;
267  explicit CoreBroker(const std::string& broker_name);
269  virtual ~CoreBroker();
271  virtual void configure(const std::string& configureString) override final;
274  virtual void configureFromArgs(int argc, char* argv[]) override final;
276  virtual void configureFromVector(std::vector<std::string> args) override final;
277 
281  bool allInitReady() const;
284 
286  void setIdentifier(const std::string& name);
288  virtual const std::string& getIdentifier() const override final { return identifier; }
289  virtual const std::string& getAddress() const override final;
290  virtual void setLoggingLevel(int logLevel) override final;
291  virtual void setLogFile(const std::string& lfile) override final;
292  virtual std::string
293  query(const std::string& target,
294  const std::string& queryStr,
295  HelicsSequencingModes mode = HELICS_SEQUENCING_MODE_FAST) override final;
296  virtual void setGlobal(const std::string& valueName, const std::string& value) override final;
297  virtual void sendCommand(const std::string& target,
298  const std::string& commandStr,
299  HelicsSequencingModes mode) override final;
300  virtual void makeConnections(const std::string& file) override final;
301  virtual void linkEndpoints(const std::string& source, const std::string& target) override final;
302  virtual void dataLink(const std::string& publication, const std::string& input) override final;
303 
304  virtual void addSourceFilterToEndpoint(const std::string& filter,
305  const std::string& endpoint) override final;
306 
307  virtual void addDestinationFilterToEndpoint(const std::string& filter,
308  const std::string& endpoint) override final;
309 
310  protected:
311  virtual std::shared_ptr<helicsCLI11App> generateCLI() override;
312 
313  private:
314  int getCountableFederates() const;
316  void checkDependencies();
318  void FindandNotifyInputTargets(BasicHandleInfo& handleInfo);
319  void FindandNotifyPublicationTargets(BasicHandleInfo& handleInfo);
320 
321  void FindandNotifyFilterTargets(BasicHandleInfo& handleInfo);
322  void FindandNotifyEndpointTargets(BasicHandleInfo& handleInfo);
324  void processDisconnect(ActionMessage& command);
326  void processError(ActionMessage& command);
328  void disconnectBroker(BasicBrokerInfo& brk);
330  void markAsDisconnected(GlobalBrokerId brkid);
332  void checkInFlightQueries(GlobalBrokerId brkid);
334  void checkForNamedInterface(ActionMessage& command);
336  void removeNamedTarget(ActionMessage& command);
338  void processQueryCommand(ActionMessage& cmd);
340  void processQuery(ActionMessage& m);
342  void processInitCommand(ActionMessage& cmd);
344  void checkQueryTimeouts();
346  void processQueryResponse(const ActionMessage& m);
348  void processLocalQuery(const ActionMessage& m);
350  std::string generateQueryAnswer(const std::string& request, bool force_ordering);
352  void processCommandInstruction(ActionMessage& m);
354  void processLocalCommandInstruction(ActionMessage& m);
356  std::string getNameList(std::string gidString) const;
358  route_id getRoute(GlobalFederateId fedid) const;
360  route_id getRoute(int32_t fedid) const { return getRoute(GlobalFederateId(fedid)); }
361 
362  const BasicBrokerInfo* getBrokerById(GlobalBrokerId brokerid) const;
363 
364  BasicBrokerInfo* getBrokerById(GlobalBrokerId brokerid);
365 
366  void addLocalInfo(BasicHandleInfo& handleInfo, const ActionMessage& m);
367  void addPublication(ActionMessage& m);
368  void addInput(ActionMessage& m);
369  void addEndpoint(ActionMessage& m);
370  void addFilter(ActionMessage& m);
371  // Handle the registration of new brokers
372  void brokerRegistration(ActionMessage&& command);
373 
374  // Handle the registration of new federates
375  void fedRegistration(ActionMessage&& command);
376 
377  // bool updateSourceFilterOperator (ActionMessage &m);
379  void initializeMapBuilder(const std::string& request,
380  std::uint16_t index,
381  bool reset,
382  bool force_ordering);
383 
384  std::string generateGlobalStatus(fileops::JsonMapBuilder& builder);
385 
387  void sendErrorToImmediateBrokers(int errorCode);
389  void sendDisconnect();
391  std::string generateFederationSummary() const;
393  void labelAsDisconnected(GlobalBrokerId brkid);
394 
396  void generateTimeBarrier(ActionMessage& m);
397  int generateMapObjectCounter() const;
398  friend class TimeoutMonitor;
399 };
400 
401 } // namespace helics
helics::timeZero
constexpr Time timeZero
Definition: helicsTime.hpp:31
helics::UnknownHandleManager::clearFederateUnknowns
void clearFederateUnknowns(GlobalFederateId id)
Definition: UnknownHandleManager.cpp:295
helics::CoreBroker::linkEndpoints
virtual void linkEndpoints(const std::string &source, const std::string &target) override final
Definition: CoreBroker.cpp:171
helics::CoreBroker::query
virtual std::string query(const std::string &target, const std::string &queryStr, HelicsSequencingModes mode=HELICS_SEQUENCING_MODE_FAST) override final
Definition: CoreBroker.cpp:2689
helics::BrokerBase::isRunning
bool isRunning() const
Definition: BrokerBase.hpp:190
helics::BrokerBase::minBrokerCount
int32_t minBrokerCount
Definition: BrokerBase.hpp:49
helics::ActionMessage::name
void name(std::string_view name)
Definition: ActionMessage.hpp:107
slow_responding_flag
constexpr uint16_t slow_responding_flag
overload of extra_flag4 indicating a federate, core or broker is slow responding
Definition: flagOperations.hpp:37
helics::BrokerBase::higher_broker_id
GlobalBrokerId higher_broker_id
the id code of the broker 1 level about this broker
Definition: BrokerBase.hpp:41
helics::BrokerBase::useJsonSerialization
bool useJsonSerialization
Definition: BrokerBase.hpp:136
helics::BrokerBase::brokerKey
std::string brokerKey
Definition: BrokerBase.hpp:63
helics::BrokerBase::sendToLogger
virtual bool sendToLogger(GlobalFederateId federateID, int logLevel, std::string_view name, std::string_view message) const
Definition: BrokerBase.cpp:396
helics::BrokerBase::timeout
Time timeout
timeout to wait to establish a broker connection before giving up
Definition: BrokerBase.hpp:56
helics::CoreBroker::generateCLI
virtual std::shared_ptr< helicsCLI11App > generateCLI() override
Definition: CoreBroker.cpp:1896
helics::UnknownHandleManager::checkForEndpointLinks
std::vector< std::string > checkForEndpointLinks(const std::string &newSource) const
Definition: UnknownHandleManager.cpp:114
HELICS_SEQUENCING_MODE_ORDERED
@ HELICS_SEQUENCING_MODE_ORDERED
Definition: helics_enums.h:367
helics::CoreBroker::configureFromVector
virtual void configureFromVector(std::vector< std::string > args) override final
Definition: CoreBroker.cpp:1881
helics::BrokerBase::enable_profiling
bool enable_profiling
indicator that profiling is enabled
Definition: BrokerBase.hpp:137
helics::CoreBroker::setLogFile
virtual void setLogFile(const std::string &lfile) override final
Definition: CoreBroker.cpp:2683
helics::BrokerFactory::findBroker
std::shared_ptr< Broker > findBroker(const std::string &brokerName)
Definition: BrokerFactory.cpp:182
helics::gGlobalBrokerIdShift
constexpr IdentifierBaseType gGlobalBrokerIdShift
Definition: GlobalFederateId.hpp:22
helics::CoreBroker::addSourceFilterToEndpoint
virtual void addSourceFilterToEndpoint(const std::string &filter, const std::string &endpoint) override final
Definition: CoreBroker.cpp:187
helics::CoreBroker::removeRoute
virtual void removeRoute(route_id rid)=0
helics::UnknownHandleManager::clearPublication
void clearPublication(const std::string &newPublication)
Definition: UnknownHandleManager.cpp:275
helics::BrokerBase::getGlobalId
GlobalBrokerId getGlobalId() const
Definition: BrokerBase.hpp:199
helics::BrokerBase::hasTimeDependency
bool hasTimeDependency
set to true if the broker has Time dependencies
Definition: BrokerBase.hpp:127
helics_definitions.hpp
base helics enumerations for C++ API's, a namespace wrapper for the definitions defined in helics_enu...
helics::BrokerFactory::unregisterBroker
void unregisterBroker(const std::string &name)
Definition: BrokerFactory.cpp:301
helics::BasicFedInfo::route
route_id route
the routing information for data to be sent to the federate
Definition: CoreBroker.hpp:55
helics::BasicBrokerInfo::_sent_disconnect_ack
bool _sent_disconnect_ack
indicator that the disconnect ack has been sent
Definition: CoreBroker.hpp:79
helics::CoreBroker::disconnect
virtual void disconnect() override final
Definition: CoreBroker.cpp:2040
helics::CoreBroker::getAllConnectionState
connection_state getAllConnectionState() const
Definition: CoreBroker.cpp:3678
helics::UnknownHandleManager::checkForLinks
std::vector< std::string > checkForLinks(const std::string &newSource) const
Definition: UnknownHandleManager.cpp:108
helics::BasicBrokerInfo::_disable_ping
bool _disable_ping
indicator that the broker doesn't respond to pings
Definition: CoreBroker.hpp:80
helics::CoreBroker::configure
virtual void configure(const std::string &configureString) override final
Definition: CoreBroker.cpp:1851
helics::Time
TimeRepresentation< count_time< 9 > > Time
Definition: helicsTime.hpp:27
helics::GlobalBrokerId::baseValue
constexpr BaseType baseValue() const
Definition: GlobalFederateId.hpp:34
loggingHelper.hpp
helics::BasicFedInfo::name
const std::string name
name of the federate
Definition: CoreBroker.hpp:53
helics::BrokerBase::global_id
std::atomic< GlobalBrokerId > global_id
Definition: BrokerBase.hpp:38
helics::CoreBroker::setLoggingCallback
virtual void setLoggingCallback(const std::function< void(int, std::string_view, std::string_view)> &logFunction) override final
Definition: CoreBroker.cpp:111
helics::GlobalFederateId
Definition: GlobalFederateId.hpp:68
helics::ActionMessage
Definition: ActionMessage.hpp:30
helics::BrokerBase::uuid_like
bool uuid_like
will be set to true if the name looks like a uuid
Definition: BrokerBase.hpp:134
helics::parent_broker_id
constexpr GlobalBrokerId parent_broker_id
Definition: GlobalFederateId.hpp:60
helics::BasicBrokerInfo
Definition: CoreBroker.hpp:63
helics::InterfaceType::FILTER
@ FILTER
handle to a filter
helics::BrokerBase::brokerStateName
const friend std::string & brokerStateName(BrokerState state)
Definition: BrokerBase.cpp:946
helics::BasicBrokerInfo::name
const std::string name
the name of the broker
Definition: CoreBroker.hpp:65
helics::BrokerBase::parseArgs
int parseArgs(int argc, char *argv[])
Definition: BrokerBase.cpp:312
helics::InterfaceType::INPUT
@ INPUT
handle to a input interface
helics::BrokerBase::haltOperations
std::atomic< bool > haltOperations
flag indicating that no further message should be processed
Definition: BrokerBase.hpp:77
helics::UnknownHandleManager::hasUnknowns
bool hasUnknowns() const
Definition: UnknownHandleManager.cpp:145
helics::CoreBroker::setGlobal
virtual void setGlobal(const std::string &valueName, const std::string &value) override final
Definition: CoreBroker.cpp:2754
helics::helicsCLI11App
Definition: helicsCLI11.hpp:41
helics::versionString
constexpr auto versionString
Definition: helicsVersion.hpp:16
helics::BrokerBase::configureBase
virtual void configureBase()
Definition: BrokerBase.cpp:339
helics::ActionMessage::counter
uint16_t counter
26 counter for filter tracking or message counter
Definition: ActionMessage.hpp:41
ERROR_LEVEL
@ ERROR_LEVEL
only print errors
Definition: loggingHelper.hpp:22
helics::BrokerBase::timeCoord
std::unique_ptr< ForwardingTimeCoordinator > timeCoord
object managing the time control
Definition: BrokerBase.hpp:101
checkActionFlag
bool checkActionFlag(uint16_t flags, FlagIndex flag)
Definition: flagOperations.hpp:85
helics::BrokerBase::minChildCount
int32_t minChildCount
Definition: BrokerBase.hpp:53
helics::CoreBroker::transmit
virtual void transmit(route_id route, const ActionMessage &command)=0
helics::BrokerBase::no_ping
bool no_ping
indicator that the broker is not very responsive to ping requests
Definition: BrokerBase.hpp:133
helics::BasicBrokerInfo::_core
bool _core
if set to true the broker is a core, false is a broker
Definition: CoreBroker.hpp:76
helics::CoreBroker::getIdentifier
virtual const std::string & getIdentifier() const override final
Definition: CoreBroker.hpp:288
helics::CoreBroker::setIdentifier
void setIdentifier(const std::string &name)
Definition: CoreBroker.cpp:62
helics::CoreBroker::~CoreBroker
virtual ~CoreBroker()
Definition: CoreBroker.cpp:56
helics::InvalidParameter
Definition: core-exceptions.hpp:47
helics::UnknownHandleManager::hasRequiredUnknowns
bool hasRequiredUnknowns() const
Definition: UnknownHandleManager.cpp:186
helics::BasicFedInfo::global_id
GlobalFederateId global_id
the identification code for the federate
Definition: CoreBroker.hpp:54
helics::BasicBrokerInfo::global_id
GlobalBrokerId global_id
the global identifier for the broker
Definition: CoreBroker.hpp:67
helics::UnknownHandleManager::checkForPublications
std::vector< targetInfo > checkForPublications(const std::string &newPublication) const
Definition: UnknownHandleManager.cpp:103
helics::BasicFedInfo
Definition: CoreBroker.hpp:51
helics::CoreBroker::setLoggingLevel
virtual void setLoggingLevel(int logLevel) override final
Definition: CoreBroker.cpp:2674
helics::root_broker_id
constexpr GlobalBrokerId root_broker_id
Definition: GlobalFederateId.hpp:62
helics::CoreBroker::connect
virtual bool connect() override final
Definition: CoreBroker.cpp:1913
helics::BrokerBase::addActionMessage
void addActionMessage(const ActionMessage &m)
Definition: BrokerBase.cpp:572
helics::BrokerBase::generateLocalAddressString
virtual std::string generateLocalAddressString() const =0
helics::UnknownHandleManager::clearInput
void clearInput(const std::string &newInput)
Definition: UnknownHandleManager.cpp:269
child_flag
constexpr uint16_t child_flag
overload of extra_flag4 indicating a message is from a child object
Definition: flagOperations.hpp:49
helics::CoreBroker::sendCommand
virtual void sendCommand(const std::string &target, const std::string &commandStr, HelicsSequencingModes mode) override final
Definition: CoreBroker.cpp:2763
helics::CoreBroker::isRoot
virtual bool isRoot() const override final
Definition: CoreBroker.hpp:207
helics::route_id
Definition: GlobalFederateId.hpp:168
helics::CoreBroker::clearTimeBarrier
virtual void clearTimeBarrier() override final
Definition: CoreBroker.cpp:1970
helics::UnknownHandleManager::clearEndpoint
void clearEndpoint(const std::string &newEndpoint)
Definition: UnknownHandleManager.cpp:281
clone_flag
@ clone_flag
flag indicating the filter is a clone filter or the data needs to be cloned
Definition: flagOperations.hpp:25
helics::UnknownHandleManager::checkForFilters
std::vector< targetInfo > checkForFilters(const std::string &newFilter) const
Definition: UnknownHandleManager.cpp:128
helics::CoreBroker::setTimeBarrier
virtual void setTimeBarrier(Time barrierTime) override final
Definition: CoreBroker.cpp:1959
clearActionFlag
void clearActionFlag(FlagContainer &M, FlagIndex flag)
Definition: flagOperations.hpp:100
observer_flag
constexpr uint16_t observer_flag
overload of optional_flag indicating that a federate is an observer only
Definition: flagOperations.hpp:43
helics::CoreBroker::processDisconnect
virtual void processDisconnect(bool skipUnregister=false) override final
Definition: CoreBroker.cpp:2003
helics::CoreBroker::isOpenToNewFederates
virtual bool isOpenToNewFederates() const override
Definition: CoreBroker.cpp:220
helics::ActionMessage::messageID
int32_t messageID
8 – message ID for a variety of purposes
Definition: ActionMessage.hpp:36
helics::BasicFedInfo::parent
GlobalBrokerId parent
the id of the parent broker/core
Definition: CoreBroker.hpp:56
helics::CoreBroker::isConnected
virtual bool isConnected() const override final
Definition: CoreBroker.cpp:1988
helics::BrokerBase::currentMessageCounter
std::size_t currentMessageCounter() const
Definition: BrokerBase.hpp:273
indicator_flag
@ indicator_flag
flag used for setting values
Definition: flagOperations.hpp:21
helics::BasicHandleInfo
Definition: BasicHandleInfo.hpp:30
helics::CoreBroker::getAddress
virtual const std::string & getAddress() const override final
Definition: CoreBroker.cpp:71
use_json_serialization_flag
@ use_json_serialization_flag
flag to indicate it should use the json packetization
Definition: flagOperations.hpp:22
helics::CoreBroker::allInitReady
bool allInitReady() const
Definition: CoreBroker.cpp:3705
helics::BasicBrokerInfo::routeInfo
std::string routeInfo
string describing the connection information for the route
Definition: CoreBroker.hpp:83
helics::BrokerBase::enteredExecutionMode
bool enteredExecutionMode
flag indicating that the broker has entered execution mode
Definition: BrokerBase.hpp:128
helics::GlobalBrokerId
Definition: GlobalFederateId.hpp:26
helics::UnknownHandleManager::checkForEndpoints
std::vector< targetInfo > checkForEndpoints(const std::string &newEndpoint) const
Definition: UnknownHandleManager.cpp:121
setActionFlag
void setActionFlag(FlagContainer &M, FlagIndex flag)
Definition: flagOperations.hpp:77
cancel_flag
constexpr uint16_t cancel_flag
overload of extra_flag3 indicating an operation is canceled
Definition: flagOperations.hpp:40
helics::ActionMessage::payload
SmallBuffer payload
buffer to contain the data payload
Definition: ActionMessage.hpp:48
helics::BrokerBase::terminate_on_error
bool terminate_on_error
flag indicating that the federation should halt on any error
Definition: BrokerBase.hpp:81
helics::ActionMessage::dest_id
GlobalFederateId dest_id
20 fed_id for a targeted message
Definition: ActionMessage.hpp:39
HelicsSequencingModes
HelicsSequencingModes
Definition: helics_enums.h:363
helics::HandleManager::getEndpoint
BasicHandleInfo * getEndpoint(std::string_view name)
Definition: HandleManager.cpp:204
helics::CoreBroker::waitForDisconnect
virtual bool waitForDisconnect(std::chrono::milliseconds msToWait=std::chrono::milliseconds(0)) const override final
Definition: CoreBroker.cpp:1994
helics::prettyPrintString
std::string prettyPrintString(const ActionMessage &command)
Definition: ActionMessage.cpp:841
empty_flag
@ empty_flag
flag indicating the message is empty
Definition: flagOperations.hpp:33
helics::BrokerBase::BrokerState::configured
@ configured
the broker itself has been configured and is ready to connect
parent_flag
constexpr uint16_t parent_flag
overload of extra_flag3 indicating the message is from a parent object
Definition: flagOperations.hpp:46
helics::BasicBrokerInfo::parent
GlobalBrokerId parent
the id of the parent broker/core
Definition: CoreBroker.hpp:69
error_flag
@ error_flag
flag indicating an error condition associated with the command
Definition: flagOperations.hpp:20
non_counting_flag
constexpr uint16_t non_counting_flag
overload of nameless_interface_flag indicating that a federate should not count in any totals
Definition: flagOperations.hpp:52
helics::BrokerBase::setLoggingFile
void setLoggingFile(const std::string &lfile)
Definition: BrokerBase.cpp:514
helics::CoreBroker::_gateway
bool _gateway
set to true if this broker should act as a gateway.
Definition: CoreBroker.hpp:97
helics::BrokerBase::BrokerState::configuring
@ configuring
the broker is in the processing of configuring
helics::ActionMessage::actionTime
Time actionTime
40 the time an action took place or will take place //32
Definition: ActionMessage.hpp:44
helics::CoreBroker::setAsRoot
virtual void setAsRoot() override final
Definition: CoreBroker.cpp:1905
helics::BrokerBase::BrokerState::terminated
@ terminated
the termination process has started
helics::ActionMessage::setDestination
void setDestination(GlobalHandle hand)
Definition: ActionMessage.hpp:99
helics::BasicBrokerInfo::_route_key
bool _route_key
indicator that the broker has a unique route id
Definition: CoreBroker.hpp:78
destination_target
@ destination_target
indicator that the target is a destination target
Definition: flagOperations.hpp:17
helics
the main namespace for the helics co-simulation library User functions will be in the helics namespac...
Definition: AsyncFedCallInfo.hpp:14
helics::InterfaceType::ENDPOINT
@ ENDPOINT
handle to an endpoint
helics::BrokerBase::BrokerState::connecting
@ connecting
the connection process has started
required_flag
@ required_flag
flag indicating that an action or match is required
Definition: flagOperations.hpp:18
helics::CoreBroker::addRoute
virtual void addRoute(route_id rid, int interfaceId, const std::string &routeInfo)=0
optional_flag
@ optional_flag
flag indicating that a connection is optional and may not be matched
Definition: flagOperations.hpp:24
helics::UnknownHandleManager::clearFilter
void clearFilter(const std::string &newFilter)
Definition: UnknownHandleManager.cpp:288
helics::BasicBrokerInfo::state
connection_state state
specify the current status of the broker
Definition: CoreBroker.hpp:71
HELICS_SEQUENCING_MODE_FAST
@ HELICS_SEQUENCING_MODE_FAST
Definition: helics_enums.h:365
helics::BasicBrokerInfo::_nonLocal
bool _nonLocal
indicator that the broker has a subbroker as a parent.
Definition: CoreBroker.hpp:77
helics::BrokerBase::queryTimeout
Time queryTimeout
Definition: BrokerBase.hpp:58
helics::UnknownHandleManager::processRequiredUnknowns
void processRequiredUnknowns(const std::function< void(const std::string &name, char type, GlobalHandle)> &cfunc) const
Definition: UnknownHandleManager.cpp:242
helics::BrokerBase::BrokerState::terminating
@ terminating
the termination process has started
helics::BrokerBase::BrokerState::connected
@ connected
the connection process has completed
core_flag
@ core_flag
flag indicating that message comes from a core vs a broker
Definition: flagOperations.hpp:19
helics::CoreBroker::globalError
virtual void globalError(int32_t errorCode, const std::string &errorString) override final
Definition: CoreBroker.cpp:1979
helics::UnknownHandleManager::checkForInputs
std::vector< targetInfo > checkForInputs(const std::string &newInput) const
Definition: UnknownHandleManager.cpp:97
helics::gGlobalFederateIdShift
constexpr IdentifierBaseType gGlobalFederateIdShift
Definition: GlobalFederateId.hpp:20
helics::BasicBrokerInfo::_hasTimeDependency
bool _hasTimeDependency
flag indicating that a broker has general endpoints it is coordinating
Definition: CoreBroker.hpp:74
helics::CoreBroker::dataLink
virtual void dataLink(const std::string &publication, const std::string &input) override final
Definition: CoreBroker.cpp:179
helics::BrokerBase::setTickForwarding
void setTickForwarding(TickForwardingReasons reason, bool value=true)
Definition: BrokerBase.cpp:866
helics::CoreBroker::configureFromArgs
virtual void configureFromArgs(int argc, char *argv[]) override final
Definition: CoreBroker.cpp:1866
helics::TimeoutMonitor
Definition: TimeoutMonitor.h:27
helics::BasicBrokerInfo::route
route_id route
the identifier for the route to take to the broker
Definition: CoreBroker.hpp:68
helics::BrokerBase::logFlush
void logFlush()
Definition: BrokerBase.cpp:552
helics::CoreBroker
Definition: CoreBroker.hpp:95
toggleActionFlag
void toggleActionFlag(FlagContainer &M, FlagIndex flag)
Definition: flagOperations.hpp:107
helics::Broker
Definition: core/Broker.hpp:18
helics::BrokerBase::BrokerState::operating
@ operating
normal operating conditions
helics::UnknownHandleManager::processNonOptionalUnknowns
void processNonOptionalUnknowns(const std::function< void(const std::string &name, char type, GlobalHandle)> &cfunc) const
Definition: UnknownHandleManager.cpp:212
WARNING
@ WARNING
print/log warning and errors
Definition: loggingHelper.hpp:24
helics::BrokerBase::actionQueue
gmlc::containers::BlockingPriorityQueue< ActionMessage > actionQueue
primary routing queue
Definition: BrokerBase.hpp:102
helics::CoreBroker::addDestinationFilterToEndpoint
virtual void addDestinationFilterToEndpoint(const std::string &filter, const std::string &endpoint) override final
Definition: CoreBroker.cpp:195
helics::BrokerBase::minFederateCount
int32_t minFederateCount
Definition: BrokerBase.hpp:47
helics::BrokerBase::identifier
std::string identifier
an identifier for the broker
Definition: BrokerBase.hpp:62
helics::connection_state
connection_state
Definition: CoreBroker.hpp:41
helics::BrokerBase
Definition: BrokerBase.hpp:34
helics::BrokerBase::setErrorState
void setErrorState(int eCode, std::string_view estring)
Definition: BrokerBase.cpp:496
helics::isPriorityCommand
bool isPriorityCommand(const ActionMessage &command) noexcept
Definition: ActionMessage.hpp:232
helics::state_string
const std::string & state_string(operation_state state)
Definition: CommonCore.cpp:49
helics::BrokerBase::BrokerState::errored
@ errored
an error was encountered
helics::BrokerBase::BrokerState::created
@ created
the broker has been created
BrokerBase.hpp
helics::BrokerBase::address
std::string address
network location of the broker
Definition: BrokerBase.hpp:68
helics::CoreBroker::makeConnections
virtual void makeConnections(const std::string &file) override final
Definition: CoreBroker.cpp:162
helics::MessageProcessingResult::NEXT_STEP
@ NEXT_STEP
indicator that the iterations have completed
helics::InterfaceType::PUBLICATION
@ PUBLICATION
handle to output interface
helics::ActionMessage::source_id
GlobalFederateId source_id
12 – for federate_id or route_id
Definition: ActionMessage.hpp:37
helics::UnknownHandleManager::hasNonOptionalUnknowns
bool hasNonOptionalUnknowns() const
Definition: UnknownHandleManager.cpp:152
helics::BrokerBase::global_broker_id_local
GlobalBrokerId global_broker_id_local
Definition: BrokerBase.hpp:39
helics::isValidIndex
bool isValidIndex(sizeType testSize, const SizedDataType &vec)
Definition: core-data.hpp:132
helics::CoreBroker::unregister
void unregister()
Definition: CoreBroker.cpp:2022
helics::generateJsonErrorResponse
std::string generateJsonErrorResponse(JsonErrorCodes code, const std::string &message)
Definition: JsonGeneration.hpp:36