 |
helics
3.0.1
|
9 #include "../common/GuardedTypes.hpp"
10 #include "../common/JsonBuilder.hpp"
11 #include "ActionMessage.hpp"
14 #include "HandleManager.hpp"
15 #include "gmlc/concurrency/DelayedObjects.hpp"
16 #include "gmlc/concurrency/TriggerVariable.hpp"
17 #include "gmlc/containers/AirLock.hpp"
18 #include "gmlc/containers/DualMappedPointerVector.hpp"
19 #include "gmlc/containers/DualMappedVector.hpp"
20 #include "gmlc/containers/MappedPointerVector.hpp"
21 #include "gmlc/containers/SimpleQueue.hpp"
22 #include "helics/helics-config.h"
25 #include "json/forwards.h"
36 #include <unordered_map>
44 class BasicHandleInfo;
45 class FilterCoordinator;
51 enum class
operation_state : std::uint8_t { operating = 0, error = 5, disconnected = 10 };
65 const FederateState* operator->()
const noexcept {
return fed; }
66 operator bool()
const noexcept {
return (fed !=
nullptr); }
81 explicit CommonCore(
const std::string& coreName);
84 virtual void configure(
const std::string& configureString)
override final;
89 virtual bool hasError()
const override final;
92 const std::string& errorString)
override final;
95 const std::string& errorString)
override final;
119 int16_t propertyValue)
override final;
122 int32_t property)
const override final;
125 bool flagValue =
true)
override final;
129 const std::string& key,
130 const std::string& type,
131 const std::string& units)
override final;
133 const std::string& key)
const override final;
135 const std::string& key,
136 const std::string& type,
137 const std::string& units)
override final;
140 const std::string& key)
const override final;
146 int32_t option_value)
override final;
151 std::string_view targetToRemove)
override final;
153 std::string_view dest,
156 std::string_view name,
167 uint32_t* inputIndex)
override final;
168 virtual const std::vector<std::shared_ptr<const SmallBuffer>>&
170 virtual const std::vector<InterfaceHandle>&
173 const std::string& name,
174 const std::string& type)
override final;
177 const std::string& name,
178 const std::string& type)
override final;
180 const std::string& name)
const override final;
182 const std::string& type_in,
183 const std::string& type_out)
override final;
185 const std::string& type_in,
186 const std::string& type_out)
override final;
189 const std::string& federateName)
override final;
190 virtual void linkEndpoints(
const std::string& source,
const std::string& dest)
override final;
192 virtual void dataLink(
const std::string& source,
const std::string& target)
override final;
194 const std::string& endpoint)
override final;
196 const std::string& endpoint)
override final;
202 Time time)
override final;
206 std::string_view destination)
override final;
210 std::string_view destination,
211 Time time)
override final;
213 std::unique_ptr<Message> message)
override final;
221 const std::string& messageToLog)
override final;
223 std::shared_ptr<FilterOperator> callback)
override final;
228 virtual const std::string&
getIdentifier()
const override final;
229 virtual const std::string&
getAddress()
const override final;
230 const std::string& getFederateNameNoThrow(
GlobalFederateId federateID)
const noexcept;
236 std::function<
void(
int, std::string_view, std::string_view)> logFunction)
override final;
238 virtual void setLogFile(
const std::string& lfile)
override final;
240 virtual std::string
query(
const std::string& target,
241 const std::string& queryStr,
245 std::function<std::string(std::string_view)> queryFunction)
override;
246 virtual void setGlobal(
const std::string& valueName,
const std::string& value)
override;
247 virtual void sendCommand(
const std::string& target,
248 const std::string& commandStr,
249 const std::string& source,
255 virtual bool connect()
override final;
259 std::chrono::milliseconds msToWait = std::chrono::milliseconds(0))
const override final;
276 const std::string& tag,
277 const std::string& value)
override final;
279 const std::string& tag)
const override final;
282 const std::string& tag,
283 const std::string& value)
override final;
285 const std::string& tag)
const override final;
290 virtual bool brokerConnect() = 0;
293 virtual void brokerDisconnect() = 0;
314 virtual void addRoute(
route_id rid,
int interfaceId,
const std::string& routeInfo) = 0;
344 FederateState* getFederateCore(
const std::string& federateName);
351 std::atomic<double> simTime{BrokerBase::mInvalidSimulationTime};
353 std::string prevIdentifier;
354 std::map<GlobalFederateId, route_id>
356 gmlc::containers::SimpleQueue<ActionMessage>
358 std::unordered_map<std::string, route_id>
360 knownExternalEndpoints;
361 std::vector<std::pair<std::string, std::string>> tags;
363 std::unique_ptr<TimeoutMonitor>
366 void transmitDelayedMessages();
368 void errorRespondDelayedMessages(
const std::string& estring);
387 void checkDependencies();
391 void checkQueryTimeouts();
404 uint16_t getNextAirlockIndex();
406 void loadBasicJsonInfo(
408 const std::function<
void(Json::Value& fedval,
const FedInfo& fed)>& fedLoader)
const;
415 void initializeMapBuilder(
const std::string& request,
418 bool force_ordering)
const;
420 std::string coreQuery(
const std::string& queryStr,
bool force_ordering)
const;
424 std::string quickCoreQueries(
const std::string& queryStr)
const;
427 std::string filteredEndpointQuery(
const FederateState* fed)
const;
432 int32_t _global_federation_size = 0;
433 std::atomic<int16_t> delayInitCounter{0};
434 bool filterTiming{
false};
439 gmlc::containers::DualMappedVector<FedInfo, std::string, GlobalFederateId> loopFederates;
443 std::atomic<int32_t> messageCounter{54};
444 ordered_guarded<HandleManager> handles;
446 std::vector<std::pair<GlobalFederateId, int32_t>> timeBlocks;
450 std::map<int32_t, std::vector<ActionMessage>>
451 delayedTimingMessages;
454 std::atomic<int> queryCounter{1};
456 gmlc::concurrency::DelayedObjects<std::string> activeQueries;
458 std::deque<std::pair<int32_t, decltype(std::chrono::steady_clock::now())>> queryTimeouts;
460 mutable std::vector<std::tuple<fileops::JsonMapBuilder, std::vector<ActionMessage>,
bool>>
464 std::atomic<std::thread::id> filterThread{std::thread::id{}};
465 std::atomic<GlobalFederateId> filterFedID;
466 std::atomic<uint16_t> nextAirLock{0};
467 std::array<gmlc::containers::AirLock<std::any>, 4>
469 gmlc::concurrency::TriggerVariable disconnection;
472 void generateFilterFederate();
474 void connectFilterTiming();
478 bool waitCoreRegistration();
481 const std::vector<std::pair<GlobalHandle, std::string_view>>& targets);
492 const std::string& key,
493 const std::string& type,
494 const std::string& units,
530 const std::string& queryStr,
531 bool force_ordering)
const;
534 void sendErrorToFederates(
int errorCode, std::string_view message);
536 bool checkAndProcessDisconnect();
538 void sendDisconnect();
542 int generateMapObjectCounter()
const;
constexpr Time timeZero
Definition: helicsTime.hpp:31
void joinAllThreads()
Definition: BrokerBase.cpp:91
virtual void processCommand(ActionMessage &&command) override final
Definition: CommonCore.cpp:2915
virtual void removeRoute(route_id rid)=0
std::unique_ptr< Message > receive(InterfaceHandle id)
Definition: FederateState.cpp:220
InterfaceHandle source_handle
16 – for local handle or local code
Definition: ActionMessage.hpp:38
virtual void send(InterfaceHandle sourceHandle, const void *data, uint64_t length) override final
Definition: CommonCore.cpp:1813
void setLoggerFunction(std::function< void(int level, std::string_view identifier, std::string_view message)> logFunction)
Definition: BrokerBase.cpp:541
constexpr auto NO_ITERATION
Definition: CoreTypes.hpp:109
virtual void configureFromVector(std::vector< std::string > args) override final
Definition: CommonCore.cpp:107
const std::vector< InterfaceHandle > & getEvents() const
Definition: FederateState.cpp:798
void setExtraDestData(int32_t data)
Definition: ActionMessage.hpp:161
const std::vector< std::shared_ptr< const SmallBuffer > > & getAllValues(InterfaceHandle handle)
Definition: FederateState.cpp:263
@ HALTED
indicator that the simulation has been halted
bool isRunning() const
Definition: BrokerBase.hpp:190
BasicHandleInfo * findHandle(GlobalHandle id)
Definition: HandleManager.cpp:130
FederateStates getState() const
Definition: FederateState.cpp:167
virtual ~CommonCore() override
Definition: CommonCore.cpp:275
Time nextAllowedSendTime() const
Definition: FederateState.hpp:326
std::atomic< GlobalFederateId > global_id
global id code, default to invalid
Definition: FederateState.hpp:60
void setIdentifier(const std::string &name)
Definition: CommonCore.cpp:2125
void name(std::string_view name)
Definition: ActionMessage.hpp:107
virtual double getSimulationTime() const override
Definition: CommonCore.cpp:487
constexpr uint16_t slow_responding_flag
overload of extra_flag4 indicating a federate, core or broker is slow responding
Definition: flagOperations.hpp:37
virtual void sendTo(InterfaceHandle sourceHandle, const void *data, uint64_t length, std::string_view destination) override final
Definition: CommonCore.cpp:1719
GlobalBrokerId higher_broker_id
the id code of the broker 1 level about this broker
Definition: BrokerBase.hpp:41
bool useJsonSerialization
Definition: BrokerBase.hpp:136
std::string brokerKey
Definition: BrokerBase.hpp:63
virtual void removeTarget(InterfaceHandle handle, std::string_view targetToRemove) override final
Definition: CommonCore.cpp:1206
virtual const std::string & getFederateName(LocalFederateId federateID) const override final
Definition: CommonCore.cpp:662
virtual bool sendToLogger(GlobalFederateId federateID, int logLevel, std::string_view name, std::string_view message) const
Definition: BrokerBase.cpp:396
Time timeout
timeout to wait to establish a broker connection before giving up
Definition: BrokerBase.hpp:56
virtual void setHandleOption(InterfaceHandle handle, int32_t option, int32_t option_value) override final
Definition: CommonCore.cpp:1135
virtual const std::shared_ptr< const SmallBuffer > & getValue(InterfaceHandle handle, uint32_t *inputIndex) override final
Definition: CommonCore.cpp:1463
std::vector< std::pair< GlobalHandle, std::string_view > > getMessageDestinations(InterfaceHandle handle)
Definition: FederateState.cpp:571
@ HELICS_SEQUENCING_MODE_ORDERED
Definition: helics_enums.h:367
InterfaceInfo & interfaces()
Definition: FederateState.hpp:161
virtual const std::vector< InterfaceHandle > & getValueUpdates(LocalFederateId federateID) override final
Definition: CommonCore.cpp:1495
virtual InterfaceHandle getInput(LocalFederateId federateID, const std::string &key) const override final
Definition: CommonCore.cpp:990
const std::string & lastErrorString() const
Definition: FederateState.hpp:337
const BasicHandleInfo * getFilter(std::string_view name) const
Definition: HandleManager.cpp:306
bool enable_profiling
indicator that profiling is enabled
Definition: BrokerBase.hpp:137
Definition: core-exceptions.hpp:38
bool isValid() const
Definition: GlobalFederateId.hpp:105
std::unique_ptr< Message > receiveAny(InterfaceHandle &id)
Definition: FederateState.cpp:229
virtual const std::string & getInjectionType(InterfaceHandle handle) const override final
Definition: CommonCore.cpp:1093
IterationResult enterExecutingMode(IterationRequest iterate, bool sendRequest=false)
Definition: FederateState.cpp:477
constexpr IdentifierBaseType gGlobalBrokerIdShift
Definition: GlobalFederateId.hpp:22
Definition: core-exceptions.hpp:93
InterfaceType
Definition: CoreTypes.hpp:96
virtual std::unique_ptr< Message > receive(InterfaceHandle destination) override final
Definition: CommonCore.cpp:1961
virtual void setIntegerProperty(LocalFederateId federateID, int32_t property, int16_t propertyValue) override final
Definition: CommonCore.cpp:794
constexpr GlobalFederateId direct_core_id
Definition: GlobalFederateId.hpp:121
int32_t getCurrentIteration() const
Definition: FederateState.cpp:172
GlobalBrokerId getGlobalId() const
Definition: BrokerBase.hpp:199
bool hasTimeDependency
set to true if the broker has Time dependencies
Definition: BrokerBase.hpp:127
bool getFlagValue(int32_t flag) const
Definition: BrokerBase.cpp:529
base helics enumerations for C++ API's, a namespace wrapper for the definitions defined in helics_enu...
@ ERROR_RESULT
indicator that an error has occurred
Time getTimeProperty(int timeProperty) const
Definition: FederateState.cpp:1644
constexpr BaseType baseValue() const
Definition: LocalFederateId.hpp:30
void setAction(action_message_def::action_t newAction)
Definition: ActionMessage.cpp:142
Definition: CommonCore.hpp:73
bool getOptionFlag(int optionFlag) const
Definition: FederateState.cpp:1660
@ FED
special logging command for message coming from a fed
Definition: loggingHelper.hpp:34
void assign(const void *start, const void *end)
Definition: SmallBuffer.hpp:174
virtual InterfaceHandle registerTargetedEndpoint(LocalFederateId federateID, const std::string &name, const std::string &type) override final
Definition: CommonCore.cpp:1537
Definition: LocalFederateId.hpp:65
virtual void setLogFile(const std::string &lfile) override final
Definition: CommonCore.cpp:2032
void processFilterReturn(ActionMessage &cmd)
Definition: FilterFederate.cpp:243
virtual const std::string & getIdentifier() const override final
Definition: CommonCore.cpp:179
virtual const std::vector< std::shared_ptr< const SmallBuffer > > & getAllValues(InterfaceHandle handle) override final
Definition: CommonCore.cpp:1480
TimeRepresentation< count_time< 9 > > Time
Definition: helicsTime.hpp:27
virtual const std::string & getDestinationTargets(InterfaceHandle handle) const override final
Definition: CommonCore.cpp:1335
uint64_t getQueueSize(InterfaceHandle id) const
Definition: FederateState.cpp:205
bool hasFilters
flag indicating filters come through the broker
Definition: BrokerBase.hpp:131
constexpr BaseType baseValue() const
Definition: GlobalFederateId.hpp:34
virtual Time timeRequest(LocalFederateId federateID, Time next) override final
Definition: CommonCore.cpp:702
std::atomic< GlobalBrokerId > global_id
Definition: BrokerBase.hpp:38
constexpr uint16_t nameless_interface_flag
overload of flag to indicate an interface is nameless
Definition: flagOperations.hpp:68
Definition: GlobalFederateId.hpp:68
Definition: ActionMessage.hpp:30
FederateState * getHandleFederate(InterfaceHandle handle)
Definition: CommonCore.cpp:292
IterationResult waitSetup()
Definition: FederateState.cpp:417
int32_t maxIterationCount
the maximum number of iterative loops that are allowed
Definition: BrokerBase.hpp:54
@ HELICS_UNKNOWN
unknown state
Definition: CoreTypes.hpp:29
constexpr GlobalBrokerId parent_broker_id
Definition: GlobalFederateId.hpp:60
int32_t fileLogLevel
the logging level for logging to a file
Definition: BrokerBase.hpp:45
LocalFederateId local_id
id code for the local federate descriptor
Definition: FederateState.hpp:59
@ FILTER
handle to a filter
GlobalHandle getDest() const
Definition: ActionMessage.hpp:149
bool destinationProcessMessage(ActionMessage &command, const BasicHandleInfo *handle)
Definition: FilterFederate.cpp:403
const friend std::string & brokerStateName(BrokerState state)
Definition: BrokerBase.cpp:946
int getIntegerProperty(int intProperty) const
Definition: FederateState.cpp:1711
int parseArgs(int argc, char *argv[])
Definition: BrokerBase.cpp:312
int lastErrorCode() const noexcept
Definition: FederateState.hpp:339
void unregister()
Definition: CommonCore.cpp:253
@ INPUT
handle to a input interface
virtual void sendToAt(InterfaceHandle sourceHandle, const void *data, uint64_t length, std::string_view destination, Time time) override final
Definition: CommonCore.cpp:1748
bool allDisconnected() const
Definition: CommonCore.cpp:458
virtual void enterInitializingMode(LocalFederateId federateID) override final
Definition: CommonCore.cpp:522
virtual void closeHandle(InterfaceHandle handle) override final
Definition: CommonCore.cpp:1189
virtual void setTimeProperty(LocalFederateId federateID, int32_t property, Time time) override final
Definition: CommonCore.cpp:820
virtual const std::string & getInterfaceInfo(InterfaceHandle handle) const override final
Definition: CommonCore.cpp:4653
virtual std::pair< std::string, std::string > getCommand(LocalFederateId federateID) override
Definition: CommonCore.cpp:2037
@ disconnected_flag
flag indicating that a broker/federate is disconnected
Definition: flagOperations.hpp:30
constexpr auto versionString
Definition: helicsVersion.hpp:16
@ HELICS_PROPERTY_INT_CONSOLE_LOG_LEVEL
Definition: helics_enums.h:274
int appendMessage(ActionMessage &m, const ActionMessage &newMessage)
Definition: ActionMessage.cpp:919
virtual void configureBase()
Definition: BrokerBase.cpp:339
uint16_t counter
26 counter for filter tracking or message counter
Definition: ActionMessage.hpp:41
virtual void setGlobal(const std::string &valueName, const std::string &value) override
Definition: CommonCore.cpp:2629
@ ERROR_LEVEL
only print errors
Definition: loggingHelper.hpp:22
virtual std::pair< std::string, std::string > waitCommand(LocalFederateId federateID) override
Definition: CommonCore.cpp:2046
@ HELICS_FLAG_OBSERVER
Definition: helics_enums.h:99
std::unique_ptr< ForwardingTimeCoordinator > timeCoord
object managing the time control
Definition: BrokerBase.hpp:101
Definition: core-exceptions.hpp:75
bool checkActionFlag(uint16_t flags, FlagIndex flag)
Definition: flagOperations.hpp:85
virtual void setQueryCallback(LocalFederateId federateID, std::function< std::string(std::string_view)> queryFunction) override
Definition: CommonCore.cpp:2145
int32_t minChildCount
Definition: BrokerBase.hpp:53
bool no_ping
indicator that the broker is not very responsive to ping requests
Definition: BrokerBase.hpp:133
bool hasActiveTimeDependencies() const
Definition: FilterFederate.cpp:1090
virtual void addRoute(route_id rid, int interfaceId, const std::string &routeInfo)=0
virtual void addDestinationTarget(InterfaceHandle handle, std::string_view dest, InterfaceType hint) override final
Definition: CommonCore.cpp:1240
virtual bool connect() override final
Definition: CommonCore.cpp:123
operation_state minFederateState() const
Definition: CommonCore.cpp:476
void setOptionFlag(int optionFlag, bool value)
Definition: FederateState.cpp:1549
CommonCore() noexcept
Definition: CommonCore.cpp:66
Definition: core-exceptions.hpp:66
InterfaceHandle dest_handle
24 local handle for a targeted message
Definition: ActionMessage.hpp:40
operation_state
Definition: CommonCore.hpp:51
virtual int32_t getHandleOption(InterfaceHandle handle, int32_t option) const override final
Definition: CommonCore.cpp:1164
virtual int16_t getIntegerProperty(LocalFederateId federateID, int32_t property) const override final
Definition: CommonCore.cpp:845
Definition: core-exceptions.hpp:47
std::string lastErrorString
storage for last error string
Definition: BrokerBase.hpp:141
Definition: HandleManager.hpp:22
@ has_source_filter_flag
indicator that an endpoint or message has a source filter
Definition: BasicHandleInfo.hpp:21
const std::string & getIdentifier() const
Definition: FederateState.hpp:157
virtual void setInterfaceTag(InterfaceHandle handle, const std::string &tag, const std::string &value) override final
Definition: CommonCore.cpp:4677
@ HELICS_PROPERTY_INT_LOG_LEVEL
Definition: helics_enums.h:268
Definition: core/Core.hpp:42
void checkInFlightQueriesForDisconnect()
Definition: CommonCore.cpp:4441
void createInterface(InterfaceType htype, InterfaceHandle handle, const std::string &key, const std::string &type, const std::string &units)
Definition: FederateState.cpp:297
void setLogLevel(int32_t level)
Definition: BrokerBase.cpp:547
constexpr GlobalBrokerId root_broker_id
Definition: GlobalFederateId.hpp:62
void setLogger(std::function< void(int, std::string_view, std::string_view)> logFunction)
Definition: FederateState.hpp:401
virtual const std::string & getExtractionType(InterfaceHandle handle) const override final
Definition: CommonCore.cpp:1117
Definition: core-exceptions.hpp:84
virtual void dataLink(const std::string &source, const std::string &target) override final
Definition: CommonCore.cpp:1681
Time grantedTime() const
Definition: FederateState.hpp:324
const char * commandErrorString(int errorCode)
Definition: ActionMessage.cpp:823
void addActionMessage(const ActionMessage &m)
Definition: BrokerBase.cpp:572
virtual void addSourceTarget(InterfaceHandle handle, std::string_view name, InterfaceType hint) override final
Definition: CommonCore.cpp:1291
virtual void setLoggingCallback(LocalFederateId federateID, std::function< void(int, std::string_view, std::string_view)> logFunction) override final
Definition: CommonCore.cpp:2055
virtual std::string generateLocalAddressString() const =0
Definition: FilterFederate.hpp:33
constexpr uint16_t child_flag
overload of extra_flag4 indicating a message is from a child object
Definition: flagOperations.hpp:49
virtual uint64_t receiveCount(InterfaceHandle destination) override final
Definition: CommonCore.cpp:1952
virtual std::string query(const std::string &target, const std::string &queryStr, HelicsSequencingModes mode) override
Definition: CommonCore.cpp:2544
virtual iteration_time requestTimeIterative(LocalFederateId federateID, Time next, IterationRequest iterate) override final
Definition: CommonCore.cpp:734
virtual bool isConfigured() const override final
Definition: CommonCore.cpp:346
Definition: GlobalFederateId.hpp:168
virtual bool waitForDisconnect(std::chrono::milliseconds msToWait=std::chrono::milliseconds(0)) const override final
Definition: CommonCore.cpp:244
@ clone_flag
flag indicating the filter is a clone filter or the data needs to be cloned
Definition: flagOperations.hpp:25
void unregisterCore(const std::string &name)
Definition: CoreFactory.cpp:358
void clearActionFlag(FlagContainer &M, FlagIndex flag)
Definition: flagOperations.hpp:100
constexpr uint16_t observer_flag
overload of optional_flag indicating that a federate is an observer only
Definition: flagOperations.hpp:43
std::pair< std::string, std::string > waitCommand()
Definition: FederateState.cpp:1918
virtual Time getTimeProperty(LocalFederateId federateID, int32_t property) const override final
Definition: CommonCore.cpp:836
IterationRequest
Definition: CoreTypes.hpp:89
bool allInitReady() const
Definition: CommonCore.cpp:442
virtual void logMessage(LocalFederateId federateID, int logLevel, const std::string &messageToLog) override final
Definition: CommonCore.cpp:2001
virtual const std::string & getInterfaceTag(InterfaceHandle handle, const std::string &tag) const override final
Definition: CommonCore.cpp:4668
int32_t messageID
8 – message ID for a variety of purposes
Definition: ActionMessage.hpp:36
virtual bool getFlagOption(LocalFederateId federateID, int32_t flag) const override final
Definition: CommonCore.cpp:906
virtual void configure(const std::string &configureString) override final
Definition: CommonCore.cpp:75
virtual void sendMessage(InterfaceHandle sourceHandle, std::unique_ptr< Message > message) override final
Definition: CommonCore.cpp:1864
virtual void setFlagOption(LocalFederateId federateID, int32_t flag, bool flagValue=true) override final
Definition: CommonCore.cpp:864
void setQueryCallback(std::function< std::string(std::string_view)> queryCallbackFunction)
Definition: FederateState.hpp:408
@ indicator_flag
flag used for setting values
Definition: flagOperations.hpp:21
virtual InterfaceHandle registerCloningFilter(const std::string &filterName, const std::string &type_in, const std::string &type_out) override final
Definition: CommonCore.cpp:1612
virtual const std::string & getHandleName(InterfaceHandle handle) const override final
Definition: CommonCore.cpp:1047
Definition: CommonCore.hpp:57
Definition: BasicHandleInfo.hpp:30
@ use_json_serialization_flag
flag to indicate it should use the json packetization
Definition: flagOperations.hpp:22
std::vector< std::pair< int, int > > intProps
container for the integer properties
Definition: CoreFederateInfo.hpp:19
virtual void finalize(LocalFederateId federateID) override final
Definition: CommonCore.cpp:429
void setProperties(const ActionMessage &cmd)
Definition: FederateState.cpp:1367
IterationResult
Definition: CoreTypes.hpp:80
bool enteredExecutionMode
flag indicating that the broker has entered execution mode
Definition: BrokerBase.hpp:128
Definition: GlobalFederateId.hpp:26
std::shared_ptr< Core > findCore(const std::string &name)
Definition: CoreFactory.cpp:275
uint16_t getInterfaceFlags() const
Definition: FederateState.hpp:215
@ ITERATE_IF_NEEDED
indicator that the iterations need to continue
void setActionFlag(FlagContainer &M, FlagIndex flag)
Definition: flagOperations.hpp:77
virtual LocalFederateId getFederateId(const std::string &name) const override final
Definition: CommonCore.cpp:682
void processMessageFilter(ActionMessage &cmd)
Definition: FilterFederate.cpp:71
SmallBuffer payload
buffer to contain the data payload
Definition: ActionMessage.hpp:48
BasicHandleInfo * getHandleInfo(int32_t index)
Definition: HandleManager.cpp:94
bool terminate_on_error
flag indicating that the federation should halt on any error
Definition: BrokerBase.hpp:81
std::atomic< int > lastErrorCode
storage for last error code
Definition: BrokerBase.hpp:140
bool empty() const
Definition: SmallBuffer.hpp:306
GlobalFederateId dest_id
20 fed_id for a targeted message
Definition: ActionMessage.hpp:39
virtual void transmit(route_id rid, const ActionMessage &command)=0
virtual const std::string & getExtractionUnits(InterfaceHandle handle) const override final
Definition: CommonCore.cpp:1078
HelicsSequencingModes
Definition: helics_enums.h:363
virtual std::string getErrorMessage() const override final
Definition: CommonCore.cpp:422
virtual void addDependency(LocalFederateId federateID, const std::string &federateName) override final
Definition: CommonCore.cpp:1707
virtual const std::string & getSourceTargets(InterfaceHandle handle) const override final
Definition: CommonCore.cpp:1366
@ HELICS_EXECUTING
the federation has entered execution state and it now advancing in time
Definition: CoreTypes.hpp:25
BasicHandleInfo * getEndpoint(std::string_view name)
Definition: HandleManager.cpp:204
constexpr InterfaceHandle gDirectSendHandle
this special handle can be used to directly send a message in a core
Definition: LocalFederateId.hpp:96
virtual void processPriorityCommand(ActionMessage &&command) override final
Definition: CommonCore.cpp:2663
std::string prettyPrintString(const ActionMessage &command)
Definition: ActionMessage.cpp:841
virtual void disconnect() override final
Definition: CommonCore.cpp:221
@ HELICS_LOG_LEVEL_DATA
Definition: helics_enums.h:196
uint16_t flags
28 set of messageFlags
Definition: ActionMessage.hpp:42
bool isDisconnectCommand(const ActionMessage &command) noexcept
Definition: ActionMessage.hpp:276
constexpr BaseType baseValue() const
Definition: LocalFederateId.hpp:73
virtual void setFilterOperator(InterfaceHandle filter, std::shared_ptr< FilterOperator > callback) override final
Definition: CommonCore.cpp:2102
FederateState * getFederateAt(LocalFederateId federateID) const
Definition: CommonCore.cpp:280
virtual void setCoreReadyToInit() override final
Definition: CommonCore.cpp:492
@ PROFILING
profiling log level
Definition: loggingHelper.hpp:23
InterfaceHandle getInterfaceHandle() const
Definition: BasicHandleInfo.hpp:64
@ empty_flag
flag indicating the message is empty
Definition: flagOperations.hpp:33
virtual IterationResult enterExecutingMode(LocalFederateId federateID, IterationRequest iterate=NO_ITERATION) override final
Definition: CommonCore.cpp:557
virtual void configureFromArgs(int argc, char *argv[]) override final
Definition: CommonCore.cpp:91
void writeProfilingData()
Definition: BrokerBase.cpp:485
FederateState * getFederate(const std::string &federateName) const
Definition: CommonCore.cpp:286
std::pair< std::string, std::string > getCommand()
Definition: FederateState.cpp:1903
virtual void makeConnections(const std::string &file) override final
Definition: CommonCore.cpp:1664
virtual int getErrorCode() const override final
Definition: CommonCore.cpp:417
@ configured
the broker itself has been configured and is ready to connect
constexpr uint16_t parent_flag
overload of extra_flag3 indicating the message is from a parent object
Definition: flagOperations.hpp:46
@ error_flag
flag indicating an error condition associated with the command
Definition: flagOperations.hpp:20
virtual void setValue(InterfaceHandle handle, const char *data, uint64_t len) override final
Definition: CommonCore.cpp:1399
virtual std::unique_ptr< Message > receiveAny(LocalFederateId federateID, InterfaceHandle &endpoint_id) override final
Definition: CommonCore.cpp:1974
@ HELICS_TERMINATING
the federate is in the process of shutting down
Definition: CoreTypes.hpp:26
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
virtual InterfaceHandle registerPublication(LocalFederateId federateID, const std::string &key, const std::string &type, const std::string &units) override final
Definition: CommonCore.cpp:999
Definition: FederateState.hpp:42
void saveProfilingData(std::string_view message)
Definition: BrokerBase.cpp:476
void setLoggingFile(const std::string &lfile)
Definition: BrokerBase.cpp:514
@ configuring
the broker is in the processing of configuring
Time actionTime
40 the time an action took place or will take place //32
Definition: ActionMessage.hpp:44
void setLogLevels(int32_t consoleLevel, int32_t fileLevel)
Definition: BrokerBase.cpp:565
std::atomic< bool > init_requested
Definition: FederateState.hpp:100
virtual void setInterfaceInfo(InterfaceHandle handle, std::string info) override final
Definition: CommonCore.cpp:4662
LocalFederateId local_fed_id
the local federate id of the handle
Definition: BasicHandleInfo.hpp:52
int loggingLevel() const
Definition: FederateState.hpp:255
virtual const std::string & getFederateTag(LocalFederateId fid, const std::string &tag) const override final
Definition: CommonCore.cpp:4705
virtual LocalFederateId registerFederate(const std::string &name, const CoreFederateInfo &info) override final
Definition: CommonCore.cpp:584
@ terminated
the termination process has started
void setDestination(GlobalHandle hand)
Definition: ActionMessage.hpp:99
virtual bool isOpenToNewFederates() const override final
Definition: CommonCore.cpp:351
IterationResult enterInitializingMode()
Definition: FederateState.cpp:445
@ destination_target
indicator that the target is a destination target
Definition: flagOperations.hpp:17
the main namespace for the helics co-simulation library User functions will be in the helics namespac...
Definition: AsyncFedCallInfo.hpp:14
virtual InterfaceHandle getPublication(LocalFederateId federateID, const std::string &key) const override final
Definition: CommonCore.cpp:1036
@ ENDPOINT
handle to an endpoint
bool debugging
flag indicating operation in a user debugging mode
Definition: BrokerBase.hpp:83
@ connecting
the connection process has started
virtual void linkEndpoints(const std::string &source, const std::string &dest) override final
Definition: CommonCore.cpp:1673
Definition: CoreFederateInfo.hpp:16
Definition: helicsTime.hpp:47
virtual void setFederateTag(LocalFederateId fid, const std::string &tag, const std::string &value) override final
Definition: CommonCore.cpp:4724
@ HELICS_SEQUENCING_MODE_FAST
Definition: helics_enums.h:365
const std::string & getSourceTargets() const
Definition: EndpointInfo.cpp:214
Time queryTimeout
Definition: BrokerBase.hpp:58
virtual InterfaceHandle registerFilter(const std::string &filterName, const std::string &type_in, const std::string &type_out) override final
Definition: CommonCore.cpp:1576
Definition: core-exceptions.hpp:29
int32_t consoleLogLevel
the logging level for console display
Definition: BrokerBase.hpp:44
virtual Time getCurrentTime(LocalFederateId federateID) const override final
Definition: CommonCore.cpp:776
@ terminating
the termination process has started
constexpr uint16_t targetted_flag
overload of extra_flag2 indicating an endpoint is targeted
Definition: flagOperations.hpp:55
@ connected
the connection process has completed
virtual void processDisconnect(bool skipUnregister=false) override final
Definition: CommonCore.cpp:192
@ core_flag
flag indicating that message comes from a core vs a broker
Definition: flagOperations.hpp:19
Definition: LocalFederateId.hpp:22
void addAction(const ActionMessage &action)
Definition: FederateState.cpp:283
void setTickForwarding(TickForwardingReasons reason, bool value=true)
Definition: BrokerBase.cpp:866
Definition: TimeoutMonitor.h:27
void setParent(CommonCore *coreObject)
Definition: FederateState.hpp:194
iteration_time requestTime(Time nextTime, IterationRequest iterate, bool sendRequest=false)
Definition: FederateState.cpp:580
static bool isReasonForTick(std::uint32_t code, TickForwardingReasons reason)
Definition: BrokerBase.hpp:217
void logMessage(int level, std::string_view logMessageSource, std::string_view message) const
Definition: FederateState.cpp:1815
void toggleActionFlag(FlagContainer &M, FlagIndex flag)
Definition: flagOperations.hpp:107
Definition: application_api/Federate.hpp:28
void processDestFilterReturn(ActionMessage &command)
Definition: FilterFederate.cpp:296
virtual InterfaceHandle registerInput(LocalFederateId federateID, const std::string &key, const std::string &type, const std::string &units) override final
Definition: CommonCore.cpp:952
bool observer
flag indicating that the broker is an observer only
Definition: BrokerBase.hpp:85
virtual InterfaceHandle registerEndpoint(LocalFederateId federateID, const std::string &name, const std::string &type) override final
Definition: CommonCore.cpp:1504
virtual int32_t getFederationSize() override final
Definition: CommonCore.cpp:693
action_message_def::action_t action() const noexcept
Definition: ActionMessage.hpp:88
@ operating
normal operating conditions
@ HELICS_PROPERTY_INT_FILE_LOG_LEVEL
Definition: helics_enums.h:271
const std::shared_ptr< const SmallBuffer > & getValue(InterfaceHandle handle, uint32_t *inputIndex)
Definition: FederateState.cpp:256
virtual uint64_t receiveCountAny(LocalFederateId federateID) override final
Definition: CommonCore.cpp:1988
@ WARNING
print/log warning and errors
Definition: loggingHelper.hpp:24
gmlc::containers::BlockingPriorityQueue< ActionMessage > actionQueue
primary routing queue
Definition: BrokerBase.hpp:102
constexpr LocalFederateId gLocalCoreId(-259)
int32_t minFederateCount
Definition: BrokerBase.hpp:47
virtual const std::string & getAddress() const override final
Definition: CommonCore.cpp:184
FilterInfo * createFilter(GlobalBrokerId dest, InterfaceHandle handle, const std::string &key, const std::string &type_in, const std::string &type_out, bool cloning)
Definition: FilterFederate.cpp:677
std::vector< GlobalHandle > getSubscribers(InterfaceHandle handle)
Definition: FederateState.cpp:560
@ HELICS_ERROR
the federation has encountered an error
Definition: CoreTypes.hpp:27
@ initializing
the enter initialization process has started
virtual InterfaceHandle getFilter(const std::string &name) const override final
Definition: CommonCore.cpp:1655
std::string identifier
an identifier for the broker
Definition: BrokerBase.hpp:62
virtual void sendCommand(const std::string &target, const std::string &commandStr, const std::string &source, HelicsSequencingModes mode) override
Definition: CommonCore.cpp:2639
@ HELICS_INITIALIZING
Definition: CoreTypes.hpp:23
const std::string & getDestinationTargets() const
Definition: EndpointInfo.cpp:233
@ NO_ITERATIONS
indicator that the iterations have completed
@ HELICS_FINISHED
the federation has finished its execution
Definition: CoreTypes.hpp:28
virtual void sendAt(InterfaceHandle sourceHandle, const void *data, uint64_t length, Time time) override final
Definition: CommonCore.cpp:1838
Definition: BrokerBase.hpp:34
void setErrorState(int eCode, std::string_view estring)
Definition: BrokerBase.cpp:496
virtual bool isConnected() const override final
Definition: CommonCore.cpp:173
bool isPriorityCommand(const ActionMessage &command) noexcept
Definition: ActionMessage.hpp:232
virtual const std::string & getInjectionUnits(InterfaceHandle handle) const override final
Definition: CommonCore.cpp:1056
const std::string & state_string(operation_state state)
Definition: CommonCore.cpp:49
virtual InterfaceHandle getEndpoint(LocalFederateId federateID, const std::string &name) const override final
Definition: CommonCore.cpp:1567
@ errored
an error was encountered
virtual void addDestinationFilterToEndpoint(const std::string &filter, const std::string &endpoint) override final
Definition: CommonCore.cpp:1697
std::string errorMessageString(const ActionMessage &command)
Definition: ActionMessage.cpp:829
@ has_dest_filter_flag
indicator that an endpoint or message has a destination filter
Definition: BasicHandleInfo.hpp:23
@ created
the broker has been created
std::string address
network location of the broker
Definition: BrokerBase.hpp:68
const BasicHandleInfo * getHandleInfo(InterfaceHandle handle) const
Definition: CommonCore.cpp:325
void setSource(GlobalHandle hand)
Definition: ActionMessage.hpp:93
Definition: core-exceptions.hpp:18
virtual void setLoggingLevel(int logLevel) override
Definition: CommonCore.cpp:2023
virtual void addSourceFilterToEndpoint(const std::string &filter, const std::string &endpoint) override final
Definition: CommonCore.cpp:1689
constexpr uint16_t make_flags(unsigned int flag)
Definition: flagOperations.hpp:117
@ NEXT_STEP
indicator that the iterations have completed
bool checkAndSetValue(InterfaceHandle pub_id, const char *data, uint64_t len)
Definition: FederateState.cpp:177
const std::string & fedStateString(FederateStates state)
Definition: FederateState.cpp:1833
@ PUBLICATION
handle to output interface
int32_t getHandleOption(InterfaceHandle handle, char iType, int32_t option) const
Definition: FederateState.cpp:1695
GlobalFederateId source_id
12 – for federate_id or route_id
Definition: ActionMessage.hpp:37
GlobalBrokerId global_broker_id_local
Definition: BrokerBase.hpp:39
const BasicHandleInfo * getLocalEndpoint(const std::string &name) const
Definition: CommonCore.cpp:330
bool isValidIndex(sizeType testSize, const SizedDataType &vec)
Definition: core-data.hpp:132
void setIterationFlags(ActionMessage &command, IterationRequest iterate)
Definition: ActionMessage.cpp:930
std::string generateJsonErrorResponse(JsonErrorCodes code, const std::string &message)
Definition: JsonGeneration.hpp:36
virtual uint64_t getCurrentReiteration(LocalFederateId federateID) const override final
Definition: CommonCore.cpp:785