9#include "ActionMessage.hpp"
10#include "CoreFederateInfo.hpp"
11#include "TimeDependencies.hpp"
12#include "nlohmann/json_fwd.hpp"
38 bool checkingExec{
false};
45 bool delayedTiming{
false};
46 bool disconnected{
false};
49 static constexpr std::int32_t TIME_COORDINATOR_VERSION{1};
54 static constexpr auto maxTimingSequenceCounter = std::numeric_limits<std::int16_t>::max();
56 static void incrementSequenceCounter(std::int32_t& counter)
59 if (counter > maxTimingSequenceCounter) {
64 static void normalizeSequenceCounter(std::int32_t& counter)
66 if (counter > maxTimingSequenceCounter) {
72 BaseTimeCoordinator();
73 explicit BaseTimeCoordinator(std::function<
void(
const ActionMessage&)> userSendMessageFunction);
74 virtual ~BaseTimeCoordinator() =
default;
76 void setMessageSender(std::function<
void(
const ActionMessage&)> userSendMessageFunction);
106 std::int32_t responseCode)
const;
Definition ActionMessage.hpp:30
Definition BaseTimeCoordinator.hpp:27
const DependencyInfo * getDependencyInfo(GlobalFederateId ofed) const
Definition BaseTimeCoordinator.cpp:238
bool executionMode
Definition BaseTimeCoordinator.hpp:39
virtual void enteringExecMode(IterationRequest mode=IterationRequest::NO_ITERATIONS)
Definition BaseTimeCoordinator.cpp:45
bool noParent
indicator that the coordinator does not have parents
Definition BaseTimeCoordinator.hpp:36
virtual bool addDependency(GlobalFederateId fedID)
Definition BaseTimeCoordinator.cpp:163
virtual void generateDebuggingTimeInfo(nlohmann::json &base) const
Definition BaseTimeCoordinator.cpp:125
virtual void resetDependency(GlobalFederateId fedID)
Definition BaseTimeCoordinator.cpp:233
virtual bool addDependent(GlobalFederateId fedID)
Definition BaseTimeCoordinator.cpp:177
bool hasActiveTimeDependencies() const
Definition BaseTimeCoordinator.cpp:271
nlohmann::json grantTimeoutCheck(const ActionMessage &cmd)
Definition BaseTimeCoordinator.cpp:143
void sendTimingInfo()
Definition BaseTimeCoordinator.cpp:286
virtual MessageProcessingResult checkExecEntry(GlobalFederateId triggerFed=GlobalFederateId{})=0
void processDependencyUpdateMessage(const ActionMessage &cmd)
Definition BaseTimeCoordinator.cpp:413
bool isDependency(GlobalFederateId ofed) const
Definition BaseTimeCoordinator.cpp:158
TimeDependencies dependencies
Definition BaseTimeCoordinator.hpp:29
Time getLastGrant(GlobalFederateId fedId) const
Definition BaseTimeCoordinator.cpp:265
void disconnect()
Definition BaseTimeCoordinator.cpp:80
bool empty() const
Definition BaseTimeCoordinator.hpp:100
std::function< void(const ActionMessage &)> sendMessageFunction
callback used to send the messages
Definition BaseTimeCoordinator.hpp:31
ActionMessage generateTimeRequest(const TimeData &dep, GlobalFederateId fed, std::int32_t responseCode) const
Definition BaseTimeCoordinator.cpp:306
std::vector< GlobalFederateId > getDependents() const
Definition BaseTimeCoordinator.cpp:254
bool restrictive_time_policy
flag indicating that a restrictive time policy should be used
Definition BaseTimeCoordinator.hpp:41
GlobalFederateId mSourceId
the identifier for inserting into the source id field of any generated messages;
Definition BaseTimeCoordinator.hpp:34
void setSourceId(GlobalFederateId sourceId)
Definition BaseTimeCoordinator.hpp:86
GlobalFederateId getMinDependency() const
Definition BaseTimeCoordinator.cpp:281
virtual TimeProcessingResult processTimeMessage(const ActionMessage &cmd)
Definition BaseTimeCoordinator.cpp:385
virtual bool updateTimeFactors()=0
virtual void removeDependent(GlobalFederateId fedID)
Definition BaseTimeCoordinator.cpp:228
std::int32_t sequenceCounter
storage for sequence counter
Definition BaseTimeCoordinator.hpp:35
bool federatesOnly
indicator that the forwarder only operates with federates
Definition BaseTimeCoordinator.hpp:37
virtual std::string printTimeStatus() const =0
virtual Time getNextTime() const =0
void setMessageSender(std::function< void(const ActionMessage &)> userSendMessageFunction)
Definition BaseTimeCoordinator.cpp:36
std::vector< GlobalFederateId > getDependencies() const
Definition BaseTimeCoordinator.cpp:243
virtual void removeDependency(GlobalFederateId fedID)
Definition BaseTimeCoordinator.cpp:223
int dependencyCount() const
Definition BaseTimeCoordinator.cpp:276
bool nonGranting
Definition BaseTimeCoordinator.hpp:44
Definition TimeDependencies.hpp:98
Definition GlobalFederateId.hpp:75
Definition TimeDependencies.hpp:62
Definition TimeDependencies.hpp:129
bool empty() const
Definition TimeDependencies.hpp:173
the main namespace for the helics co-simulation library User functions will be in the helics namespac...
Definition AsyncFedCallInfo.hpp:14
MessageProcessingResult
Definition CoreTypes.hpp:75
IterationRequest
Definition CoreTypes.hpp:103
@ NO_ITERATIONS
indicator that the iterations have completed
TimeProcessingResult
Definition TimeDependencies.hpp:42
TimeRepresentation< count_time< 9 > > Time
Definition helicsTime.hpp:27