 |
helics
3.0.1
|
9 #include "../common/JsonBuilder.hpp"
11 #include "FilterCoordinator.hpp"
12 #include "FilterInfo.hpp"
13 #include "GlobalFederateId.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,
const std::string&,
const std::string&)> 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 gmlc::containers::MappedPointerVector<FilterInfo, GlobalHandle> filters;
80 const std::string& key,
81 const std::string& type_in,
82 const std::string& type_out,
85 void setCallbacks(std::function<
void(
const ActionMessage&)> queueMessage,
90 mQueueMessage = std::move(queueMessage);
91 mQueueMessageMove = std::move(queueMessageMove);
92 mSendMessage = std::move(sendMessage);
93 mSendMessageMove = std::move(sendMessageMove);
96 void setLogger(std::function<
void(
int,
const std::string&,
const std::string&)> logger)
98 mLogger = std::move(logger);
101 void setDeliver(std::function<
void(
ActionMessage&)> deliverMessage)
103 mDeliverMessage = std::move(deliverMessage);
106 void setAirLockFunction(std::function<gmlc::containers::AirLock<std::any>&(
int)> getAirLock)
108 mGetAirLock = std::move(getAirLock);
110 void organizeFilterOperations();
123 void setHandleManager(
HandleManager* handles) { mHandles = handles; }
125 std::string query(
const std::string& queryStr)
const;
141 void addTimeReturn(int32_t
id,
Time TimeVal);
142 void clearTimeReturn(int32_t
id);
InterfaceHandle source_handle
16 – for local handle or local code
Definition: ActionMessage.hpp:38
constexpr BaseType baseValue() const
Definition: GlobalFederateId.hpp:80
Time getGrantedTime() const
Definition: TimeCoordinator.hpp:136
Definition: FilterInfo.hpp:29
const BasicHandleInfo * getFilter(std::string_view name) const
Definition: HandleManager.cpp:306
void timeRequest(Time nextTime, IterationRequest iterate, Time newValueTime, Time newMessageTime)
Definition: TimeCoordinator.cpp:143
const GlobalBrokerId core_id
id of the core that manages the filter
Definition: FilterInfo.hpp:43
~FilterFederate()
Definition: FilterFederate.cpp:37
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:185
void setAction(action_message_def::action_t newAction)
Definition: ActionMessage.cpp:142
std::string printTimeStatus() const
Definition: TimeCoordinator.cpp:692
Definition: LocalFederateId.hpp:65
void processFilterReturn(ActionMessage &cmd)
Definition: FilterFederate.cpp:243
TimeRepresentation< count_time< 9 > > Time
Definition: helicsTime.hpp:27
constexpr BaseType baseValue() const
Definition: GlobalFederateId.hpp:34
Definition: GlobalFederateId.hpp:68
Definition: ActionMessage.hpp:30
constexpr GlobalBrokerId parent_broker_id
Definition: GlobalFederateId.hpp:60
bool destinationProcessMessage(ActionMessage &command, const BasicHandleInfo *handle)
Definition: FilterFederate.cpp:403
Definition: FilterCoordinator.hpp:17
@ disconnected_flag
flag indicating that a broker/federate is disconnected
Definition: flagOperations.hpp:30
constexpr auto versionString
Definition: helicsVersion.hpp:16
const std::string key
the identifier of the filter
Definition: FilterInfo.hpp:46
bool checkActionFlag(uint16_t flags, FlagIndex flag)
Definition: flagOperations.hpp:85
bool hasActiveTimeDependencies() const
Definition: FilterFederate.cpp:1090
InterfaceHandle handle
the interface handle component
Definition: GlobalFederateId.hpp:131
const GlobalHandle handle
the global federate id for the creator of the handle
Definition: BasicHandleInfo.hpp:51
InterfaceHandle dest_handle
24 local handle for a targeted message
Definition: ActionMessage.hpp:40
Definition: HandleManager.hpp:22
@ has_source_filter_flag
indicator that an endpoint or message has a source filter
Definition: BasicHandleInfo.hpp:21
GlobalFederateId getFederateId() const
Definition: BasicHandleInfo.hpp:66
Definition: core/Core.hpp:42
const char * commandErrorString(int errorCode)
Definition: ActionMessage.cpp:823
void disconnect()
Definition: TimeCoordinator.cpp:63
Definition: FilterFederate.hpp:33
uint32_t sequenceID
32 a sequence number for ordering
Definition: ActionMessage.hpp:43
bool cloning
indicator that the filter is a destination filter
Definition: FilterInfo.hpp:52
@ clone_flag
flag indicating the filter is a clone filter or the data needs to be cloned
Definition: flagOperations.hpp:25
void updateMessageTime(Time messageUpdateTime, bool allowRequestSend)
Definition: TimeCoordinator.cpp:453
@ DELAY_MESSAGE
delay the current message and continue processing
bool hasActiveTimeDependencies() const
Definition: TimeCoordinator.cpp:351
const InterfaceHandle handle
id handle of the filter
Definition: FilterInfo.hpp:44
Definition: BasicHandleInfo.hpp:30
Definition: GlobalFederateId.hpp:26
std::shared_ptr< FilterOperator > filterOp
the callback operation of the filter
Definition: FilterInfo.hpp:55
bool addDependency(GlobalFederateId fedID)
Definition: TimeCoordinator.cpp:711
void setActionFlag(FlagContainer &M, FlagIndex flag)
Definition: flagOperations.hpp:77
void processMessageFilter(ActionMessage &cmd)
Definition: FilterFederate.cpp:71
BasicHandleInfo * getHandleInfo(int32_t index)
Definition: HandleManager.cpp:94
GlobalFederateId dest_id
20 fed_id for a targeted message
Definition: ActionMessage.hpp:39
@ HELICS_EXECUTING
the federation has entered execution state and it now advancing in time
Definition: CoreTypes.hpp:25
BasicHandleInfo * getEndpoint(std::string_view name)
Definition: HandleManager.cpp:204
Definition: TimeCoordinator.hpp:55
constexpr BaseType baseValue() const
Definition: LocalFederateId.hpp:73
InterfaceHandle getInterfaceHandle() const
Definition: BasicHandleInfo.hpp:64
@ error_flag
flag indicating an error condition associated with the command
Definition: flagOperations.hpp:20
void enteringExecMode(IterationRequest mode)
Definition: TimeCoordinator.cpp:45
Time actionTime
40 the time an action took place or will take place //32
Definition: ActionMessage.hpp:44
@ has_non_cloning_dest_filter_flag
Definition: BasicHandleInfo.hpp:25
std::vector< FilterInfo * > cloningDestFilters
storage for cloning destination filters
Definition: FilterCoordinator.hpp:24
@ destination_target
indicator that the target is a destination target
Definition: flagOperations.hpp:17
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:785
FederateStates
Definition: CoreTypes.hpp:21
@ HELICS_LOG_LEVEL_ERROR
Definition: helics_enums.h:181
std::unique_ptr< Message > createMessageFromCommand(const ActionMessage &cmd)
Definition: ActionMessage.cpp:632
void generateDebuggingTimeInfo(Json::Value &base) const
Definition: TimeCoordinator.cpp:305
const std::string type
the type of data used by the handle
Definition: BasicHandleInfo.hpp:59
std::vector< GlobalFederateId > getDependents() const
Definition: TimeCoordinator.hpp:142
void processDestFilterReturn(ActionMessage &command)
Definition: FilterFederate.cpp:296
Definition: GlobalFederateId.hpp:128
bool used
indicator that the handle is being used to link with another federate
Definition: BasicHandleInfo.hpp:54
@ CONTINUE_PROCESSING
the current loop should continue
action_message_def::action_t action() const noexcept
Definition: ActionMessage.hpp:88
FilterInfo * createFilter(GlobalBrokerId dest, InterfaceHandle handle, const std::string &key, const std::string &type_in, const std::string &type_out, bool cloning)
Definition: FilterFederate.cpp:677
@ HELICS_ERROR
the federation has encountered an error
Definition: CoreTypes.hpp:27
@ HELICS_INITIALIZING
Definition: CoreTypes.hpp:23
const std::string key
the name of the handle
Definition: BasicHandleInfo.hpp:58
@ NO_ITERATIONS
indicator that the iterations have completed
@ HELICS_FINISHED
the federation has finished its execution
Definition: CoreTypes.hpp:28
GlobalFederateId fed_id
the federate id component
Definition: GlobalFederateId.hpp:130
@ has_dest_filter_flag
indicator that an endpoint or message has a destination filter
Definition: BasicHandleInfo.hpp:23
void generateConfig(Json::Value &base) const
Definition: TimeCoordinator.cpp:280
const std::string & fedStateString(FederateStates state)
Definition: FederateState.cpp:1833
Time allowedSendTime() const
Definition: TimeCoordinator.hpp:138
GlobalFederateId source_id
12 – for federate_id or route_id
Definition: ActionMessage.hpp:37