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);
Definition: ActionMessage.hpp:30
Definition: BasicHandleInfo.hpp:20
Definition: core/Core.hpp:41
Definition: FilterCoordinator.hpp:17
Definition: FilterFederate.hpp:33
bool destinationProcessMessage(ActionMessage &command, const BasicHandleInfo *handle)
Definition: FilterFederate.cpp:403
void processDestFilterReturn(ActionMessage &command)
Definition: FilterFederate.cpp:295
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:690
void processMessageFilter(ActionMessage &cmd)
Definition: FilterFederate.cpp:69
bool hasActiveTimeDependencies() const
Definition: FilterFederate.cpp:1113
void processFilterReturn(ActionMessage &cmd)
Definition: FilterFederate.cpp:242
~FilterFederate()
Definition: FilterFederate.cpp:35
Definition: FilterInfo.hpp:29
Definition: GlobalFederateId.hpp:30
Definition: GlobalFederateId.hpp:75
Definition: GlobalFederateId.hpp:147
Definition: HandleManager.hpp:25
Definition: LocalFederateId.hpp:65
Definition: TimeCoordinator.hpp:48
bool globalTime
true if using a global time manager parent
Definition: TimeCoordinator.hpp:94
the main namespace for the helics co-simulation library User functions will be in the helics namespac...
Definition: AsyncFedCallInfo.hpp:14
FederateStates
Definition: CoreTypes.hpp:21
TimeRepresentation< count_time< 9 > > Time
Definition: helicsTime.hpp:27