 |
helics
3.3.0
|
9 #include "../common/JsonBuilder.hpp"
11 #include "FederateIdExtra.hpp"
12 #include "FilterCoordinator.hpp"
13 #include "FilterInfo.hpp"
14 #include "TimeCoordinator.hpp"
15 #include "gmlc/containers/AirLock.hpp"
16 #include "gmlc/containers/MappedPointerVector.hpp"
31 class BasicHandleInfo;
37 const std::string mName;
43 std::map<InterfaceHandle, std::unique_ptr<FilterCoordinator>> filterCoord;
53 std::function<void(
int, std::string_view, std::string_view)> mLogger;
54 std::function<gmlc::containers::AirLock<std::any>&(int)> mGetAirLock;
55 std::deque<std::pair<int32_t, Time>> timeBlockProcesses;
56 Time minReturnTime{Time::maxVal()};
58 std::map<int32_t, std::set<int32_t>> ongoingFilterProcesses;
60 std::map<int32_t, std::set<int32_t>> ongoingDestFilterProcesses;
63 std::atomic<int32_t> messageCounter{54};
65 bool usingGlobalTime{
false};
67 gmlc::containers::MappedPointerVector<FilterInfo, GlobalHandle> filters;
83 std::string_view type_in,
84 std::string_view type_out,
87 void setCallbacks(std::function<
void(
const ActionMessage&)> queueMessage,
92 mQueueMessage = std::move(queueMessage);
93 mQueueMessageMove = std::move(queueMessageMove);
94 mSendMessage = std::move(sendMessage);
95 mSendMessageMove = std::move(sendMessageMove);
98 void setLogger(std::function<
void(
int, std::string_view, std::string_view)> logger)
100 mLogger = std::move(logger);
103 void setDeliver(std::function<
void(
ActionMessage&)> deliverMessage)
105 mDeliverMessage = std::move(deliverMessage);
108 void setAirLockFunction(std::function<gmlc::containers::AirLock<std::any>&(
int)> getAirLock)
110 mGetAirLock = std::move(getAirLock);
112 void organizeFilterOperations();
125 void setHandleManager(
HandleManager* handles) { mHandles = handles; }
127 std::string query(std::string_view queryStr)
const;
131 void useGlobalTimeCoordinator(
bool value)
133 usingGlobalTime = value;
149 void addTimeReturn(int32_t
id,
Time TimeVal);
150 void clearTimeReturn(int32_t
id);
@ destination_target
indicator that the target is a destination target
Definition: flagOperations.hpp:43
virtual std::string printTimeStatus() const override
Definition: TimeCoordinator.cpp:879
constexpr BaseType baseValue() const
Definition: GlobalFederateId.hpp:84
Time getGrantedTime() const
Definition: TimeCoordinator.hpp:135
@ has_non_cloning_dest_filter_flag
indicator that the endpoint or filter has a destination filter that alters the message
Definition: flagOperations.hpp:66
Definition: FilterInfo.hpp:29
const BasicHandleInfo * getFilter(std::string_view name) const
Definition: HandleManager.cpp:305
void timeRequest(Time nextTime, IterationRequest iterate, Time newValueTime, Time newMessageTime)
Definition: TimeCoordinator.cpp:103
const GlobalBrokerId core_id
id of the core that manages the filter
Definition: FilterInfo.hpp:43
~FilterFederate()
Definition: FilterFederate.cpp:36
base helics enumerations for C++ API's, a namespace wrapper for the definitions defined in helics_enu...
@ HELICS_LOG_LEVEL_WARNING
Definition: helics_enums.h:192
void disconnect()
Definition: BaseTimeCoordinator.cpp:79
Definition: LocalFederateId.hpp:65
void processFilterReturn(ActionMessage &cmd)
Definition: FilterFederate.cpp:243
TimeRepresentation< count_time< 9 > > Time
Definition: helicsTime.hpp:27
constexpr Time cBigTime
Definition: helicsTime.hpp:37
constexpr BaseType baseValue() const
Definition: GlobalFederateId.hpp:35
Definition: GlobalFederateId.hpp:72
Definition: ActionMessage.hpp:30
constexpr GlobalBrokerId parent_broker_id
Definition: GlobalFederateId.hpp:64
bool destinationProcessMessage(ActionMessage &command, const BasicHandleInfo *handle)
Definition: FilterFederate.cpp:404
Definition: FilterCoordinator.hpp:17
@ has_dest_filter_flag
indicator that an endpoint or message has a destination filter
Definition: flagOperations.hpp:64
constexpr auto versionString
Definition: helicsVersion.hpp:18
bool globalTime
true if using a global time manager parent
Definition: TimeCoordinator.hpp:101
const std::string key
the identifier of the filter
Definition: FilterInfo.hpp:46
bool hasActiveTimeDependencies() const
Definition: FilterFederate.cpp:1110
InterfaceHandle handle
the interface handle component
Definition: GlobalFederateId.hpp:147
const GlobalHandle handle
the global federate id for the creator of the handle
Definition: BasicHandleInfo.hpp:38
Definition: HandleManager.hpp:25
GlobalFederateId getFederateId() const
Definition: BasicHandleInfo.hpp:53
Definition: core/Core.hpp:41
bool empty() const
Definition: BaseTimeCoordinator.hpp:74
const char * commandErrorString(int errorCode)
Definition: ActionMessage.cpp:828
Definition: FilterFederate.hpp:33
@ disconnected_flag
flag indicating that a broker/federate is disconnected
Definition: flagOperations.hpp:85
@ has_source_filter_flag
indicator that an endpoint or message has a source filter
Definition: flagOperations.hpp:60
bool hasActiveTimeDependencies() const
Definition: BaseTimeCoordinator.cpp:253
bool cloning
indicator that the filter is a destination filter
Definition: FilterInfo.hpp:52
void updateMessageTime(Time messageUpdateTime, bool allowRequestSend)
Definition: TimeCoordinator.cpp:396
void setActionFlag(FlagContainer &M, FlagIndex flag)
Definition: flagOperations.hpp:130
const InterfaceHandle handle
id handle of the filter
Definition: FilterInfo.hpp:44
Definition: BasicHandleInfo.hpp:20
Definition: GlobalFederateId.hpp:27
std::shared_ptr< FilterOperator > filterOp
the callback operation of the filter
Definition: FilterInfo.hpp:55
void processMessageFilter(ActionMessage &cmd)
Definition: FilterFederate.cpp:70
BasicHandleInfo * getHandleInfo(int32_t index)
Definition: HandleManager.cpp:93
BasicHandleInfo * getEndpoint(std::string_view name)
Definition: HandleManager.cpp:203
Definition: TimeCoordinator.hpp:55
constexpr BaseType baseValue() const
Definition: LocalFederateId.hpp:73
InterfaceHandle getInterfaceHandle() const
Definition: BasicHandleInfo.hpp:51
@ CONTINUE_PROCESSING
the current loop should continue
std::vector< FilterInfo * > cloningDestFilters
storage for cloning destination filters
Definition: FilterCoordinator.hpp:24
the main namespace for the helics co-simulation library User functions will be in the helics namespac...
Definition: AsyncFedCallInfo.hpp:14
std::vector< GlobalFederateId > getDependencies() const
Definition: TimeCoordinator.cpp:933
@ HELICS_LOG_LEVEL_ERROR
Definition: helics_enums.h:188
bool checkActionFlag(uint16_t flags, FlagIndex flag)
Definition: flagOperations.hpp:138
@ EXECUTING
the federation has entered execution state and it now advancing in time
std::unique_ptr< Message > createMessageFromCommand(const ActionMessage &cmd)
Definition: ActionMessage.cpp:633
@ FINISHED
the federation has finished its execution
const std::string type
the type of data used by the handle
Definition: BasicHandleInfo.hpp:46
@ clone_flag
flag indicating the filter is a clone filter or the data needs to be cloned
Definition: flagOperations.hpp:55
FilterInfo * createFilter(GlobalBrokerId dest, InterfaceHandle handle, std::string_view key, std::string_view type_in, std::string_view type_out, bool cloning)
Definition: FilterFederate.cpp:689
std::vector< GlobalFederateId > getDependents() const
Definition: TimeCoordinator.hpp:143
void processDestFilterReturn(ActionMessage &command)
Definition: FilterFederate.cpp:296
Definition: GlobalFederateId.hpp:144
bool used
Definition: BasicHandleInfo.hpp:41
@ error_flag
flag indicating an error condition associated with the command
Definition: flagOperations.hpp:17
virtual void generateDebuggingTimeInfo(Json::Value &base) const override
Definition: TimeCoordinator.cpp:269
@ DELAY_MESSAGE
delay the current message and continue processing
const std::string key
the name of the handle
Definition: BasicHandleInfo.hpp:45
@ NO_ITERATIONS
indicator that the iterations have completed
virtual void enteringExecMode(IterationRequest mode) override
Definition: TimeCoordinator.cpp:24
GlobalFederateId fed_id
the federate id component
Definition: GlobalFederateId.hpp:146
@ ERRORED
the federation has encountered an error
void generateConfig(Json::Value &base) const
Definition: TimeCoordinator.cpp:244
FederateStates
Definition: CoreTypes.hpp:21
const std::string & fedStateString(FederateStates state)
Definition: FederateState.cpp:2035
Time allowedSendTime() const
Definition: TimeCoordinator.hpp:139
bool triggered
indicator the federate was triggered recently
Definition: TimeCoordinator.hpp:99
virtual bool addDependency(GlobalFederateId fedID) override
Definition: TimeCoordinator.cpp:893