9 #include "../common/GuardedTypes.hpp"
10 #include "../common/JsonBuilder.hpp"
11 #include "ActionMessage.hpp"
14 #include "FederateIdExtra.hpp"
15 #include "HandleManager.hpp"
16 #include "gmlc/concurrency/DelayedObjects.hpp"
17 #include "gmlc/concurrency/TriggerVariable.hpp"
18 #include "gmlc/containers/AirLock.hpp"
19 #include "gmlc/containers/DualStringMappedVector.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;
48 class TranslatorFederate;
53 enum class
OperatingState : std::uint8_t { OPERATING = 0, ERROR_STATE = 5, DISCONNECTED = 10 };
67 const FederateState* operator->()
const noexcept {
return fed; }
68 operator bool()
const noexcept {
return (fed !=
nullptr); }
83 explicit CommonCore(std::string_view coreName);
86 virtual void configure(std::string_view configureString)
override final;
91 virtual bool hasError()
const override final;
94 std::string_view errorString)
override final;
97 std::string_view errorString)
override final;
117 std::chrono::milliseconds msToWait)
override final;
123 int16_t propertyValue)
override final;
126 int32_t property)
const override final;
129 bool flagValue =
true)
override final;
133 std::string_view key,
134 std::string_view type,
135 std::string_view units)
override final;
137 std::string_view key)
const override final;
139 std::string_view key,
140 std::string_view type,
141 std::string_view units)
override final;
144 std::string_view key)
const override final;
150 int32_t option_value)
override final;
155 std::string_view targetToRemove)
override final;
157 std::string_view dest,
160 std::string_view name,
171 uint32_t* inputIndex)
override final;
172 virtual const std::vector<std::shared_ptr<const SmallBuffer>>&
174 virtual const std::vector<InterfaceHandle>&
177 std::string_view name,
178 std::string_view type)
override final;
181 std::string_view name,
182 std::string_view type)
override final;
184 std::string_view name)
const override final;
187 std::string_view name)
override final;
190 std::string_view name)
const override final;
193 std::string_view type_in,
194 std::string_view type_out)
override final;
196 std::string_view type_in,
197 std::string_view type_out)
override final;
199 std::string_view endpointType,
200 std::string_view units)
override final;
204 std::string_view federateName)
override final;
205 virtual void linkEndpoints(std::string_view source, std::string_view dest)
override final;
206 virtual void addAlias(std::string_view interfaceKey, std::string_view alias)
override final;
208 virtual void dataLink(std::string_view source, std::string_view target)
override final;
210 std::string_view endpoint)
override final;
212 std::string_view endpoint)
override final;
218 Time time)
override final;
222 std::string_view destination)
override final;
226 std::string_view destination,
227 Time time)
override final;
229 std::unique_ptr<Message> message)
override final;
237 std::string_view messageToLog)
override final;
239 std::shared_ptr<FilterOperator> callback)
override final;
242 std::shared_ptr<TranslatorOperator> callbacks)
override final;
244 std::shared_ptr<FederateOperator> callback)
override;
248 virtual const std::string&
getIdentifier()
const override final;
249 virtual const std::string&
getAddress()
const override final;
250 const std::string& getFederateNameNoThrow(
GlobalFederateId federateID)
const noexcept;
256 std::function<
void(
int, std::string_view, std::string_view)> logFunction)
override final;
258 virtual void setLogFile(std::string_view lfile)
override final;
260 virtual std::string
query(std::string_view target,
261 std::string_view queryStr,
264 std::function<std::string(std::string_view)> queryFunction,
266 virtual void setGlobal(std::string_view valueName, std::string_view value)
override;
268 std::string_view commandStr,
269 std::string_view source,
275 virtual bool connect()
override final;
279 std::chrono::milliseconds msToWait = std::chrono::milliseconds(0))
const override final;
296 std::string_view tag,
297 std::string_view value)
override final;
299 std::string_view tag)
const override final;
302 std::string_view tag,
303 std::string_view value)
override final;
305 std::string_view tag)
const override final;
310 virtual bool brokerConnect() = 0;
313 virtual void brokerDisconnect() = 0;
364 FederateState* getFederateCore(std::string_view federateName);
371 std::atomic<double> simTime{BrokerBase::mInvalidSimulationTime};
373 std::string prevIdentifier;
375 std::map<GlobalFederateId, route_id> routing_table;
377 gmlc::containers::SimpleQueue<ActionMessage> delayTransmitQueue;
379 std::unordered_map<std::string, route_id> knownExternalEndpoints;
380 std::vector<std::pair<std::string, std::string>> tags;
382 std::unique_ptr<TimeoutMonitor> timeoutMon;
384 void transmitDelayedMessages();
386 void errorRespondDelayedMessages(std::string_view estring);
390 void transmitDelayedMessages(GlobalFederateId source);
393 void routeMessage(ActionMessage& cmd, GlobalFederateId dest);
396 void routeMessage(
const ActionMessage& cmd);
399 void routeMessage(ActionMessage&& cmd, GlobalFederateId dest);
402 void routeMessage(ActionMessage&& cmd);
405 checkNewInterface(LocalFederateId federateID, std::string_view key,
InterfaceType type);
407 void checkDependencies();
409 void processQueryResponse(
const ActionMessage& message);
411 void checkQueryTimeouts();
413 void processCommandsForCore(
const ActionMessage& cmd);
415 void processCoreConfigureCommands(ActionMessage& cmd);
417 void processInitRequest(ActionMessage& cmd);
419 void processExecRequest(ActionMessage& cmd);
421 void processDisconnectCommand(ActionMessage& cmd);
424 void processTimingTick(ActionMessage& cmd);
426 void processQueryCommand(ActionMessage& cmd);
428 void processLogAndErrorCommand(ActionMessage& cmd);
430 void processLinkingCommand(ActionMessage& cmd);
433 bool checkForLocalPublication(ActionMessage& cmd);
435 uint16_t getNextAirlockIndex();
437 void loadBasicJsonInfo(
439 const std::function<
void(Json::Value& fedval,
const FedInfo& fed)>& fedLoader)
const;
446 void initializeMapBuilder(std::string_view request,
449 bool force_ordering)
const;
451 std::string coreQuery(std::string_view queryStr,
bool force_ordering)
const;
455 std::string quickCoreQueries(std::string_view queryStr)
const;
458 std::string filteredEndpointQuery(
const FederateState* fed)
const;
460 void processCommandInstruction(ActionMessage& command);
463 int32_t mGlobalFederationSize{0};
465 std::atomic<int16_t> delayInitCounter{0};
466 bool filterTiming{
false};
470 gmlc::containers::DualStringMappedVector<FedInfo, GlobalFederateId> loopFederates;
474 std::atomic<int32_t> messageCounter{54};
475 ordered_guarded<HandleManager> handles;
477 HandleManager loopHandles;
479 std::vector<std::pair<GlobalFederateId, int32_t>> timeBlocks;
480 TranslatorFederate* translatorFed{
nullptr};
481 std::atomic<std::thread::id> translatorThread{std::thread::id{}};
482 std::atomic<GlobalFederateId> translatorFedID;
485 std::map<int32_t, std::vector<ActionMessage>> delayedTimingMessages;
488 std::atomic<int> queryCounter{1};
490 gmlc::concurrency::DelayedObjects<std::string> activeQueries;
492 std::deque<std::pair<int32_t, decltype(std::chrono::steady_clock::now())>> queryTimeouts;
494 mutable std::vector<std::tuple<fileops::JsonMapBuilder, std::vector<ActionMessage>,
QueryReuse>>
497 FilterFederate* filterFed{
nullptr};
498 std::atomic<std::thread::id> filterThread{std::thread::id{}};
499 std::atomic<GlobalFederateId> filterFedID;
500 std::atomic<uint16_t> nextAirLock{0};
502 std::array<gmlc::containers::AirLock<std::any>, 4> dataAirlocks;
503 gmlc::concurrency::TriggerVariable disconnection;
505 std::atomic<bool> initIterations{
false};
509 void generateFilterFederate();
511 void generateTranslatorFederate();
513 void connectFilterTiming();
515 bool hasTimeBlock(GlobalFederateId federateID);
517 bool waitCoreRegistration();
519 void generateMessages(ActionMessage& message,
520 const std::vector<std::pair<GlobalHandle, std::string_view>>& targets);
522 void deliverMessage(ActionMessage& message);
524 ActionMessage& processMessage(ActionMessage& message);
528 const BasicHandleInfo& createBasicHandle(GlobalFederateId global_federateId,
529 LocalFederateId local_federateId,
531 std::string_view key,
532 std::string_view type,
533 std::string_view units,
539 bool isLocal(GlobalFederateId global_fedid)
const;
543 route_id getRoute(GlobalFederateId global_fedid)
const;
545 void checkForNamedInterface(ActionMessage& command);
547 void removeNamedTarget(ActionMessage& command);
550 void setAsUsed(BasicHandleInfo* hand);
552 void registerInterface(ActionMessage& command);
554 void addTargetToInterface(ActionMessage& command);
556 void removeTargetFromInterface(ActionMessage& command);
558 void disconnectInterface(ActionMessage& command);
560 void manageTimeBlocks(
const ActionMessage& command);
568 std::string federateQuery(
const FederateState* fed,
569 std::string_view queryStr,
570 bool force_ordering)
const;
573 void sendErrorToFederates(
int errorCode, std::string_view message);
575 bool checkAndProcessDisconnect();
579 void broadcastToFederates(ActionMessage& cmd);
581 int generateMapObjectCounter()
const;
582 friend class TimeoutMonitor;
constexpr auto NO_ITERATION
simplified alias to indicate that no iterations are needed
Definition: CoreTypes.hpp:127
Definition: application_api/Federate.hpp:27
Definition: ActionMessage.hpp:30
Definition: BasicHandleInfo.hpp:20
Definition: BrokerBase.hpp:42
Definition: CommonCore.hpp:75
FederateState * getHandleFederate(InterfaceHandle handle)
Definition: CommonCore.cpp:303
virtual const std::string & getFederateTag(LocalFederateId fid, std::string_view tag) const override final
Definition: CommonCore.cpp:5581
virtual void setIntegerProperty(LocalFederateId federateID, int32_t property, int16_t propertyValue) override final
Definition: CommonCore.cpp:1012
virtual void setFlagOption(LocalFederateId federateID, int32_t flag, bool flagValue=true) override final
Definition: CommonCore.cpp:1085
virtual bool waitForDisconnect(std::chrono::milliseconds msToWait=std::chrono::milliseconds(0)) const override final
Definition: CommonCore.cpp:255
virtual int32_t getFederationSize() override final
Definition: CommonCore.cpp:856
virtual const std::string & getExtractionType(InterfaceHandle handle) const override final
Definition: CommonCore.cpp:1386
virtual int32_t getHandleOption(InterfaceHandle handle, int32_t option) const override final
Definition: CommonCore.cpp:1433
virtual uint64_t receiveCount(InterfaceHandle destination) override final
Definition: CommonCore.cpp:2368
virtual void removeRoute(route_id rid)=0
virtual void transmit(route_id rid, ActionMessage &&command)=0
virtual void processPriorityCommand(ActionMessage &&command) override final
Definition: CommonCore.cpp:3167
virtual InterfaceHandle registerDataSink(LocalFederateId federateID, std::string_view name) override final
Definition: CommonCore.cpp:1857
virtual std::string getErrorMessage() const override final
Definition: CommonCore.cpp:464
virtual const std::string & getInjectionType(InterfaceHandle handle) const override final
Definition: CommonCore.cpp:1362
virtual void sendAt(InterfaceHandle sourceHandle, const void *data, uint64_t length, Time time) override final
Definition: CommonCore.cpp:2222
void unregister()
Definition: CommonCore.cpp:264
virtual void sendCommand(std::string_view target, std::string_view commandStr, std::string_view source, HelicsSequencingModes mode) override
Definition: CommonCore.cpp:3139
virtual InterfaceHandle getPublication(LocalFederateId federateID, std::string_view key) const override final
Definition: CommonCore.cpp:1306
virtual void setValue(InterfaceHandle handle, const char *data, uint64_t len) override final
Definition: CommonCore.cpp:1725
virtual InterfaceHandle registerTargetedEndpoint(LocalFederateId federateID, std::string_view name, std::string_view type) override final
Definition: CommonCore.cpp:1879
const BasicHandleInfo * getHandleInfo(InterfaceHandle handle) const
Definition: CommonCore.cpp:336
FederateState * getFederateAt(LocalFederateId federateID) const
Definition: CommonCore.cpp:291
virtual void setFilterOperator(InterfaceHandle filter, std::shared_ptr< FilterOperator > callback) override final
Definition: CommonCore.cpp:2520
bool allDisconnected() const
Definition: CommonCore.cpp:523
virtual void sendMessage(InterfaceHandle sourceHandle, std::unique_ptr< Message > message) override final
Definition: CommonCore.cpp:2248
virtual void setGlobal(std::string_view valueName, std::string_view value) override
Definition: CommonCore.cpp:3129
virtual Time getCurrentTime(LocalFederateId federateID) const override final
Definition: CommonCore.cpp:1003
virtual const std::string & getFederateName(LocalFederateId federateID) const override final
Definition: CommonCore.cpp:819
virtual void closeHandle(InterfaceHandle handle) override final
Definition: CommonCore.cpp:1458
virtual void dataLink(std::string_view source, std::string_view target) override final
Definition: CommonCore.cpp:2043
virtual std::pair< std::string, std::string > getCommand(LocalFederateId federateID) override
Definition: CommonCore.cpp:2455
virtual InterfaceHandle getTranslator(std::string_view name) const override final
Definition: CommonCore.cpp:2008
virtual InterfaceHandle registerTranslator(std::string_view translatorName, std::string_view endpointType, std::string_view units) override final
Definition: CommonCore.cpp:1974
virtual Time timeRequest(LocalFederateId federateID, Time next) override final
Definition: CommonCore.cpp:865
virtual InterfaceHandle registerCloningFilter(std::string_view filterName, std::string_view type_in, std::string_view type_out) override final
Definition: CommonCore.cpp:1945
virtual int getErrorCode() const override final
Definition: CommonCore.cpp:459
virtual iteration_time requestTimeIterative(LocalFederateId federateID, Time next, IterationRequest iterate) override final
Definition: CommonCore.cpp:923
virtual InterfaceHandle getFilter(std::string_view name) const override final
Definition: CommonCore.cpp:1998
virtual const std::string & getSourceTargets(InterfaceHandle handle) const override final
Definition: CommonCore.cpp:1691
virtual void processDisconnect(bool skipUnregister=false) override final
Definition: CommonCore.cpp:200
virtual void setQueryCallback(LocalFederateId federateID, std::function< std::string(std::string_view)> queryFunction, int order) override
Definition: CommonCore.cpp:2611
virtual void addSourceTarget(InterfaceHandle handle, std::string_view name, InterfaceType hint) override final
Definition: CommonCore.cpp:1588
virtual bool connect() override final
Definition: CommonCore.cpp:130
virtual void setTranslatorOperator(InterfaceHandle translator, std::shared_ptr< TranslatorOperator > callbacks) override final
Definition: CommonCore.cpp:2542
virtual void setFederateOperator(LocalFederateId federateID, std::shared_ptr< FederateOperator > callback) override
Definition: CommonCore.cpp:2567
virtual std::unique_ptr< Message > receiveAny(LocalFederateId federateID, InterfaceHandle &endpoint_id) override final
Definition: CommonCore.cpp:2390
virtual InterfaceHandle registerFilter(std::string_view filterName, std::string_view type_in, std::string_view type_out) override final
Definition: CommonCore.cpp:1923
virtual InterfaceHandle getDataSink(LocalFederateId federateID, std::string_view name) const override final
Definition: CommonCore.cpp:1913
CommonCore() noexcept
Definition: CommonCore.cpp:73
virtual const std::string & getInjectionUnits(InterfaceHandle handle) const override final
Definition: CommonCore.cpp:1325
virtual InterfaceHandle registerEndpoint(LocalFederateId federateID, std::string_view name, std::string_view type) override final
Definition: CommonCore.cpp:1830
virtual iteration_time enterExecutingMode(LocalFederateId federateID, IterationRequest iterate=NO_ITERATION) override final
Definition: CommonCore.cpp:647
virtual bool isConnected() const override final
Definition: CommonCore.cpp:180
virtual const std::shared_ptr< const SmallBuffer > & getValue(InterfaceHandle handle, uint32_t *inputIndex) override final
Definition: CommonCore.cpp:1789
virtual Time getTimeProperty(LocalFederateId federateID, int32_t property) const override final
Definition: CommonCore.cpp:1054
virtual void setInterfaceTag(InterfaceHandle handle, std::string_view tag, std::string_view value) override final
Definition: CommonCore.cpp:5553
virtual void configureFromArgs(int argc, char *argv[]) override final
Definition: CommonCore.cpp:98
virtual void configureFromVector(std::vector< std::string > args) override final
Definition: CommonCore.cpp:114
virtual InterfaceHandle registerInput(LocalFederateId federateID, std::string_view key, std::string_view type, std::string_view units) override final
Definition: CommonCore.cpp:1236
virtual ~CommonCore() override
Definition: CommonCore.cpp:286
virtual double getSimulationTime() const override
Definition: CommonCore.cpp:544
bool allInitReady() const
Definition: CommonCore.cpp:507
virtual void sendTo(InterfaceHandle sourceHandle, const void *data, uint64_t length, std::string_view destination) override final
Definition: CommonCore.cpp:2080
virtual void setLoggingLevel(int logLevel) override
Definition: CommonCore.cpp:2437
virtual void setLogFile(std::string_view lfile) override final
Definition: CommonCore.cpp:2446
virtual void addSourceFilterToEndpoint(std::string_view filter, std::string_view endpoint) override final
Definition: CommonCore.cpp:2051
virtual bool enterInitializingMode(LocalFederateId federateID, IterationRequest request) override final
Definition: CommonCore.cpp:579
virtual void processCommand(ActionMessage &&command) override final
Definition: CommonCore.cpp:3433
virtual void removeTarget(InterfaceHandle handle, std::string_view targetToRemove) override final
Definition: CommonCore.cpp:1475
virtual std::string query(std::string_view target, std::string_view queryStr, HelicsSequencingModes mode) override
Definition: CommonCore.cpp:3038
virtual const std::string & getInterfaceTag(InterfaceHandle handle, std::string_view tag) const override final
Definition: CommonCore.cpp:5544
virtual std::pair< std::string, std::string > waitCommand(LocalFederateId federateID) override
Definition: CommonCore.cpp:2464
virtual void addDestinationTarget(InterfaceHandle handle, std::string_view dest, InterfaceType hint) override final
Definition: CommonCore.cpp:1509
virtual InterfaceHandle getInput(LocalFederateId federateID, std::string_view key) const override final
Definition: CommonCore.cpp:1267
virtual uint64_t receiveCountAny(LocalFederateId federateID) override final
Definition: CommonCore.cpp:2404
virtual InterfaceHandle getEndpoint(LocalFederateId federateID, std::string_view name) const override final
Definition: CommonCore.cpp:1903
virtual const std::vector< InterfaceHandle > & getValueUpdates(LocalFederateId federateID) override final
Definition: CommonCore.cpp:1821
virtual int16_t getIntegerProperty(LocalFederateId federateID, int32_t property) const override final
Definition: CommonCore.cpp:1063
virtual void send(InterfaceHandle sourceHandle, const void *data, uint64_t length) override final
Definition: CommonCore.cpp:2197
virtual void transmit(route_id rid, const ActionMessage &command)=0
virtual void makeConnections(const std::string &file) override final
Definition: CommonCore.cpp:2018
virtual bool getFlagOption(LocalFederateId federateID, int32_t flag) const override final
Definition: CommonCore.cpp:1133
OperatingState minFederateState() const
Definition: CommonCore.cpp:533
virtual LocalFederateId getFederateId(std::string_view name) const override final
Definition: CommonCore.cpp:845
virtual void setInterfaceInfo(InterfaceHandle handle, std::string_view info) override final
Definition: CommonCore.cpp:5538
virtual void finalize(LocalFederateId federateID) override final
Definition: CommonCore.cpp:471
virtual const std::string & getHandleName(InterfaceHandle handle) const override final
Definition: CommonCore.cpp:1316
virtual void addDestinationFilterToEndpoint(std::string_view filter, std::string_view endpoint) override final
Definition: CommonCore.cpp:2059
virtual void addDependency(LocalFederateId federateID, std::string_view federateName) override final
Definition: CommonCore.cpp:2068
virtual void processCommunications(LocalFederateId federateID, std::chrono::milliseconds msToWait) override final
Definition: CommonCore.cpp:983
virtual void logMessage(LocalFederateId federateID, int logLevel, std::string_view messageToLog) override final
Definition: CommonCore.cpp:2417
virtual const std::vector< std::shared_ptr< const SmallBuffer > > & getAllValues(InterfaceHandle handle) override final
Definition: CommonCore.cpp:1806
virtual std::unique_ptr< Message > receive(InterfaceHandle destination) override final
Definition: CommonCore.cpp:2377
virtual const std::string & getAddress() const override final
Definition: CommonCore.cpp:192
const BasicHandleInfo * getLocalEndpoint(std::string_view name) const
Definition: CommonCore.cpp:341
virtual void setHandleOption(InterfaceHandle handle, int32_t option, int32_t option_value) override final
Definition: CommonCore.cpp:1404
virtual bool isOpenToNewFederates() const override final
Definition: CommonCore.cpp:363
virtual void linkEndpoints(std::string_view source, std::string_view dest) override final
Definition: CommonCore.cpp:2027
virtual void disconnect() override final
Definition: CommonCore.cpp:229
void checkInFlightQueriesForDisconnect()
Definition: CommonCore.cpp:5305
virtual InterfaceHandle registerPublication(LocalFederateId federateID, std::string_view key, std::string_view type, std::string_view units) override final
Definition: CommonCore.cpp:1277
virtual const std::string & getInterfaceInfo(InterfaceHandle handle) const override final
Definition: CommonCore.cpp:5529
virtual void configure(std::string_view configureString) override final
Definition: CommonCore.cpp:82
virtual void setFederateTag(LocalFederateId fid, std::string_view tag, std::string_view value) override final
Definition: CommonCore.cpp:5600
virtual void setCoreReadyToInit() override final
Definition: CommonCore.cpp:549
virtual const std::string & getExtractionUnits(InterfaceHandle handle) const override final
Definition: CommonCore.cpp:1347
FederateState * getFederate(std::string_view federateName) const
Definition: CommonCore.cpp:297
virtual void sendToAt(InterfaceHandle sourceHandle, const void *data, uint64_t length, std::string_view destination, Time time) override final
Definition: CommonCore.cpp:2120
void setIdentifier(std::string_view name)
Definition: CommonCore.cpp:2590
virtual void setTimeProperty(LocalFederateId federateID, int32_t property, Time time) override final
Definition: CommonCore.cpp:1038
virtual LocalFederateId registerFederate(std::string_view name, const CoreFederateInfo &info) override final
Definition: CommonCore.cpp:694
virtual void setLoggingCallback(LocalFederateId federateID, std::function< void(int, std::string_view, std::string_view)> logFunction) override final
Definition: CommonCore.cpp:2473
virtual const std::string & getDestinationTargets(InterfaceHandle handle) const override final
Definition: CommonCore.cpp:1660
virtual const std::string & getIdentifier() const override final
Definition: CommonCore.cpp:187
virtual void addAlias(std::string_view interfaceKey, std::string_view alias) override final
Definition: CommonCore.cpp:2035
virtual void addRoute(route_id rid, int interfaceId, std::string_view routeInfo)=0
virtual bool isConfigured() const override final
Definition: CommonCore.cpp:358
Definition: CoreFederateInfo.hpp:16
Definition: core/Core.hpp:41
Definition: CommonCore.hpp:59
Definition: FederateState.hpp:50
Definition: GlobalFederateId.hpp:75
Definition: LocalFederateId.hpp:65
Definition: LocalFederateId.hpp:22
Definition: GlobalFederateId.hpp:187
HelicsSequencingModes
Definition: helics_enums.h:425
action_t
Definition: ActionMessageDefintions.hpp:20
the main namespace for the helics co-simulation library User functions will be in the helics namespac...
Definition: AsyncFedCallInfo.hpp:14
const std::string & stateString(OperatingState state)
Definition: CommonCore.cpp:56
IterationRequest
Definition: CoreTypes.hpp:102
InterfaceType
Definition: CoreTypes.hpp:111
QueryReuse
Enumeration of if query result is reusable.
Definition: queryHelpers.hpp:39
TimeRepresentation< count_time< 9 > > Time
Definition: helicsTime.hpp:27
OperatingState
Definition: CommonCore.hpp:53
Definition: helicsTime.hpp:43