 |
helics
2.8.1
|
9 #include "../common/JsonBuilder.hpp"
11 #include "FilterCoordinator.hpp"
12 #include "FilterInfo.hpp"
13 #include "TimeCoordinator.hpp"
14 #include "global_federate_id.hpp"
15 #include "gmlc/containers/AirLock.hpp"
16 #include "gmlc/containers/MappedPointerVector.hpp"
17 #include "helics/external/any.hpp"
31 class BasicHandleInfo;
37 const std::string mName;
43 std::map<interface_handle, std::unique_ptr<FilterCoordinator>> filterCoord;
53 std::function<void(
int,
const std::string&,
const std::string&)> mLogger;
54 std::function<gmlc::containers::AirLock<stx::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, global_handle> 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<stx::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;
150 void addTimeReturn(int32_t
id,
Time TimeVal);
151 void clearTimeReturn(int32_t
id);
std::string generateJsonString(const Json::Value &block)
Definition: JsonProcessingFunctions.cpp:97
global_federate_id source_id
12 – for federate_id or route_id
Definition: ActionMessage.hpp:36
@ HELICS_INITIALIZING
Definition: core-types.hpp:24
Time getGrantedTime() const
Definition: TimeCoordinator.hpp:124
interface_handle dest_handle
24 local handle for a targeted message
Definition: ActionMessage.hpp:39
Definition: FilterInfo.hpp:18
const BasicHandleInfo * getFilter(const std::string &name) const
Definition: HandleManager.cpp:306
interface_handle getInterfaceHandle() const
Definition: BasicHandleInfo.hpp:71
~FilterFederate()
Definition: FilterFederate.cpp:34
constexpr base_type baseValue() const
Definition: federate_id.hpp:73
interface_handle source_handle
16 – for local handle or local code
Definition: ActionMessage.hpp:37
Definition: global_federate_id.hpp:26
base helics enumerations for C++ API's, a namespace wrapper for the definitions defined in helics_enu...
Definition: global_federate_id.hpp:68
void setAction(action_message_def::action_t newAction)
Definition: ActionMessage.cpp:140
std::string printTimeStatus() const
Definition: TimeCoordinator.cpp:649
constexpr global_broker_id parent_broker_id
Definition: global_federate_id.hpp:60
void processFilterReturn(ActionMessage &cmd)
Definition: FilterFederate.cpp:242
TimeRepresentation< count_time< 9 > > Time
Definition: helics-time.hpp:27
federate_state
Definition: core-types.hpp:22
void enteringExecMode(iteration_request mode)
Definition: TimeCoordinator.cpp:42
Definition: ActionMessage.hpp:29
bool destinationProcessMessage(ActionMessage &command, const BasicHandleInfo *handle)
Definition: FilterFederate.cpp:402
Definition: FilterCoordinator.hpp:17
constexpr base_type baseValue() const
Definition: global_federate_id.hpp:34
@ helics_log_level_warning
Definition: helics_enums.h:169
@ 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:35
bool checkActionFlag(uint16_t flags, FlagIndex flag)
Definition: flagOperations.hpp:75
FilterInfo * createFilter(global_broker_id dest, interface_handle handle, const std::string &key, const std::string &type_in, const std::string &type_out, bool cloning)
Definition: FilterFederate.cpp:676
bool hasActiveTimeDependencies() const
Definition: FilterFederate.cpp:1090
global_federate_id fed_id
the federate id component
Definition: global_federate_id.hpp:130
Definition: HandleManager.hpp:20
@ has_source_filter_flag
indicator that an endpoint or message has a source filter
Definition: BasicHandleInfo.hpp:27
interface_handle handle
the interface handle component
Definition: global_federate_id.hpp:131
Definition: core/Core.hpp:42
global_federate_id getFederateId() const
Definition: BasicHandleInfo.hpp:73
@ helics_log_level_error
Definition: helics_enums.h:167
@ continue_processing
the current loop should continue
const char * commandErrorString(int errorCode)
Definition: ActionMessage.cpp:837
void disconnect()
Definition: TimeCoordinator.cpp:60
Definition: FilterFederate.hpp:33
uint32_t sequenceID
a sequence number for ordering
Definition: ActionMessage.hpp:42
@ no_iterations
indicator that the iterations have completed
bool cloning
indicator that the filter is a destination filter
Definition: FilterInfo.hpp:39
@ clone_flag
flag indicating the filter is a clone filter or the data needs to be cloned
Definition: flagOperations.hpp:25
Definition: global_federate_id.hpp:128
bool addDependency(global_federate_id fedID)
Definition: TimeCoordinator.cpp:668
constexpr base_type baseValue() const
Definition: global_federate_id.hpp:83
void updateMessageTime(Time messageUpdateTime, bool allowRequestSend)
Definition: TimeCoordinator.cpp:411
bool hasActiveTimeDependencies() const
Definition: TimeCoordinator.cpp:348
Definition: BasicHandleInfo.hpp:36
@ fed
special logging command for message coming from a fed
Definition: loggingHelper.hpp:32
std::shared_ptr< FilterOperator > filterOp
the callback operation of the filter
Definition: FilterInfo.hpp:42
@ HELICS_ERROR
the federation has encountered an error
Definition: core-types.hpp:28
const std::string & fedStateString(federate_state state)
Definition: FederateState.cpp:1645
void setActionFlag(FlagContainer &M, FlagIndex flag)
Definition: flagOperations.hpp:67
void processMessageFilter(ActionMessage &cmd)
Definition: FilterFederate.cpp:68
BasicHandleInfo * getHandleInfo(int32_t index)
Definition: HandleManager.cpp:94
BasicHandleInfo * getEndpoint(const std::string &name)
Definition: HandleManager.cpp:204
Definition: federate_id.hpp:65
Definition: TimeCoordinator.hpp:55
@ HELICS_EXECUTING
the federation has entered execution state and it now advancing in time
Definition: core-types.hpp:26
@ error_flag
flag indicating an error condition associated with the command
Definition: flagOperations.hpp:20
Time actionTime
40 the time an action took place or will take place //32
Definition: ActionMessage.hpp:43
@ has_non_cloning_dest_filter_flag
Definition: BasicHandleInfo.hpp:31
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
const global_handle handle
the global federate id for the creator of the handle
Definition: BasicHandleInfo.hpp:57
std::unique_ptr< Message > createMessageFromCommand(const ActionMessage &cmd)
Definition: ActionMessage.cpp:628
void generateDebuggingTimeInfo(Json::Value &base) const
Definition: TimeCoordinator.cpp:302
const std::string type
the type of data used by the handle
Definition: BasicHandleInfo.hpp:65
const global_broker_id core_id
id of the core that manages the filter
Definition: FilterInfo.hpp:32
std::vector< global_federate_id > getDependencies() const
Definition: TimeCoordinator.cpp:742
void processDestFilterReturn(ActionMessage &command)
Definition: FilterFederate.cpp:295
global_federate_id dest_id
20 fed_id for a targeted message
Definition: ActionMessage.hpp:38
std::vector< global_federate_id > getDependents() const
Definition: TimeCoordinator.hpp:130
bool used
indicator that the handle is being used to link with another federate
Definition: BasicHandleInfo.hpp:60
@ HELICS_FINISHED
the federation has finished its execution
Definition: core-types.hpp:29
action_message_def::action_t action() const noexcept
Definition: ActionMessage.hpp:89
const std::string key
the name of the handle
Definition: BasicHandleInfo.hpp:64
const interface_handle handle
id handle of the filter
Definition: FilterInfo.hpp:33
@ has_dest_filter_flag
indicator that an endpoint or message has a destination filter
Definition: BasicHandleInfo.hpp:29
void generateConfig(Json::Value &base) const
Definition: TimeCoordinator.cpp:277
void timeRequest(Time nextTime, iteration_request iterate, Time newValueTime, Time newMessageTime)
Definition: TimeCoordinator.cpp:140
@ delay_message
delay the current message and continue processing
Time allowedSendTime() const
Definition: TimeCoordinator.hpp:126