9 #include "ActionMessage.hpp"
10 #include "CoreFederateInfo.hpp"
11 #include "TimeDependencies.hpp"
12 #include "nlohmann/json_fwd.hpp"
36 bool checkingExec{
false};
43 bool delayedTiming{
false};
44 bool disconnected{
false};
47 static constexpr std::int32_t TIME_COORDINATOR_VERSION{1};
48 BaseTimeCoordinator();
49 explicit BaseTimeCoordinator(std::function<
void(
const ActionMessage&)> userSendMessageFunction);
50 virtual ~BaseTimeCoordinator() =
default;
52 void setMessageSender(std::function<
void(
const ActionMessage&)> userSendMessageFunction);
82 std::int32_t responseCode)
const;
Definition: ActionMessage.hpp:30
Definition: BaseTimeCoordinator.hpp:25
const DependencyInfo * getDependencyInfo(GlobalFederateId ofed) const
Definition: BaseTimeCoordinator.cpp:238
bool executionMode
Definition: BaseTimeCoordinator.hpp:37
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:34
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:27
Time getLastGrant(GlobalFederateId fedId) const
Definition: BaseTimeCoordinator.cpp:265
void disconnect()
Definition: BaseTimeCoordinator.cpp:80
bool empty() const
Definition: BaseTimeCoordinator.hpp:76
std::function< void(const ActionMessage &)> sendMessageFunction
callback used to send the messages
Definition: BaseTimeCoordinator.hpp:29
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:39
GlobalFederateId mSourceId
the identifier for inserting into the source id field of any generated messages;
Definition: BaseTimeCoordinator.hpp:32
void setSourceId(GlobalFederateId sourceId)
Definition: BaseTimeCoordinator.hpp:62
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:33
bool federatesOnly
indicator that the forwarder only operates with federates
Definition: BaseTimeCoordinator.hpp:35
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:42
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