 |
helics
3.3.0
|
9 #include "../common/GuardedTypes.hpp"
10 #include "../common/JsonBuilder.hpp"
11 #include "ActionMessage.hpp"
14 #include "FederateIdExtra.hpp"
15 #include "HandleManager.hpp"
16 #include "gmlc/concurrency/DelayedObjects.hpp"
17 #include "gmlc/concurrency/TriggerVariable.hpp"
18 #include "gmlc/containers/AirLock.hpp"
19 #include "gmlc/containers/DualStringMappedVector.hpp"
20 #include "gmlc/containers/MappedPointerVector.hpp"
21 #include "gmlc/containers/SimpleQueue.hpp"
22 #include "helics/helics-config.h"
25 #include "json/forwards.h"
36 #include <unordered_map>
44 class BasicHandleInfo;
45 class FilterCoordinator;
48 class TranslatorFederate;
52 enum class
OperatingState : std::uint8_t { OPERATING = 0, ERROR_STATE = 5, DISCONNECTED = 10 };
66 const FederateState* operator->()
const noexcept {
return fed; }
67 operator bool()
const noexcept {
return (fed !=
nullptr); }
82 explicit CommonCore(std::string_view coreName);
85 virtual void configure(std::string_view configureString)
override final;
90 virtual bool hasError()
const override final;
93 std::string_view errorString)
override final;
96 std::string_view errorString)
override final;
115 std::chrono::milliseconds msToWait)
override final;
122 int16_t propertyValue)
override final;
125 int32_t property)
const override final;
128 bool flagValue =
true)
override final;
132 std::string_view key,
133 std::string_view type,
134 std::string_view units)
override final;
136 std::string_view key)
const override final;
138 std::string_view key,
139 std::string_view type,
140 std::string_view units)
override final;
143 std::string_view key)
const override final;
149 int32_t option_value)
override final;
154 std::string_view targetToRemove)
override final;
156 std::string_view dest,
159 std::string_view name,
170 uint32_t* inputIndex)
override final;
171 virtual const std::vector<std::shared_ptr<const SmallBuffer>>&
173 virtual const std::vector<InterfaceHandle>&
176 std::string_view name,
177 std::string_view type)
override final;
180 std::string_view name,
181 std::string_view type)
override final;
183 std::string_view name)
const override final;
185 std::string_view type_in,
186 std::string_view type_out)
override final;
188 std::string_view type_in,
189 std::string_view type_out)
override final;
191 std::string_view endpointType,
192 std::string_view units)
override final;
196 std::string_view federateName)
override final;
197 virtual void linkEndpoints(std::string_view source, std::string_view dest)
override final;
198 virtual void addAlias(std::string_view interfaceKey, std::string_view alias)
override final;
200 virtual void dataLink(std::string_view source, std::string_view target)
override final;
202 std::string_view endpoint)
override final;
204 std::string_view endpoint)
override final;
210 Time time)
override final;
214 std::string_view destination)
override final;
218 std::string_view destination,
219 Time time)
override final;
221 std::unique_ptr<Message> message)
override final;
229 std::string_view messageToLog)
override final;
231 std::shared_ptr<FilterOperator> callback)
override final;
234 std::shared_ptr<TranslatorOperator> callbacks)
override final;
238 virtual const std::string&
getIdentifier()
const override final;
239 virtual const std::string&
getAddress()
const override final;
240 const std::string& getFederateNameNoThrow(
GlobalFederateId federateID)
const noexcept;
246 std::function<
void(
int, std::string_view, std::string_view)> logFunction)
override final;
248 virtual void setLogFile(std::string_view lfile)
override final;
250 virtual std::string
query(std::string_view target,
251 std::string_view queryStr,
255 std::function<std::string(std::string_view)> queryFunction)
override;
256 virtual void setGlobal(std::string_view valueName, std::string_view value)
override;
258 std::string_view commandStr,
259 std::string_view source,
265 virtual bool connect()
override final;
269 std::chrono::milliseconds msToWait = std::chrono::milliseconds(0))
const override final;
286 std::string_view tag,
287 std::string_view value)
override final;
289 std::string_view tag)
const override final;
292 std::string_view tag,
293 std::string_view value)
override final;
295 std::string_view tag)
const override final;
300 virtual bool brokerConnect() = 0;
303 virtual void brokerDisconnect() = 0;
324 virtual void addRoute(
route_id rid,
int interfaceId, std::string_view routeInfo) = 0;
354 FederateState* getFederateCore(std::string_view federateName);
361 std::atomic<double> simTime{BrokerBase::mInvalidSimulationTime};
363 std::string prevIdentifier;
365 std::map<GlobalFederateId, route_id> routing_table;
367 gmlc::containers::SimpleQueue<ActionMessage> delayTransmitQueue;
369 std::unordered_map<std::string, route_id> knownExternalEndpoints;
370 std::vector<std::pair<std::string, std::string>> tags;
372 std::unique_ptr<TimeoutMonitor> timeoutMon;
374 void transmitDelayedMessages();
376 void errorRespondDelayedMessages(std::string_view estring);
395 void checkDependencies();
399 void checkQueryTimeouts();
416 uint16_t getNextAirlockIndex();
418 void loadBasicJsonInfo(
420 const std::function<
void(Json::Value& fedval,
const FedInfo& fed)>& fedLoader)
const;
427 void initializeMapBuilder(std::string_view request,
430 bool force_ordering)
const;
432 std::string coreQuery(std::string_view queryStr,
bool force_ordering)
const;
436 std::string quickCoreQueries(std::string_view queryStr)
const;
439 std::string filteredEndpointQuery(
const FederateState* fed)
const;
444 int32_t _global_federation_size = 0;
445 std::atomic<int16_t> delayInitCounter{0};
447 bool filterTiming{
false};
451 gmlc::containers::DualStringMappedVector<FedInfo, GlobalFederateId> loopFederates;
455 std::atomic<int32_t> messageCounter{54};
456 ordered_guarded<HandleManager> handles;
460 std::vector<std::pair<GlobalFederateId, int32_t>> timeBlocks;
462 std::atomic<std::thread::id> translatorThread{std::thread::id{}};
463 std::atomic<GlobalFederateId> translatorFedID;
466 std::map<int32_t, std::vector<ActionMessage>> delayedTimingMessages;
469 std::atomic<int> queryCounter{1};
471 gmlc::concurrency::DelayedObjects<std::string> activeQueries;
473 std::deque<std::pair<int32_t, decltype(std::chrono::steady_clock::now())>> queryTimeouts;
475 mutable std::vector<std::tuple<fileops::JsonMapBuilder, std::vector<ActionMessage>,
bool>>
479 std::atomic<std::thread::id> filterThread{std::thread::id{}};
480 std::atomic<GlobalFederateId> filterFedID;
481 std::atomic<uint16_t> nextAirLock{0};
482 std::array<gmlc::containers::AirLock<std::any>, 4> dataAirlocks;
484 gmlc::concurrency::TriggerVariable disconnection;
487 void generateFilterFederate();
489 void generateTranslatorFederate();
491 void connectFilterTiming();
495 bool waitCoreRegistration();
498 const std::vector<std::pair<GlobalHandle, std::string_view>>& targets);
509 std::string_view key,
510 std::string_view type,
511 std::string_view units,
547 std::string_view queryStr,
548 bool force_ordering)
const;
551 void sendErrorToFederates(
int errorCode, std::string_view message);
553 bool checkAndProcessDisconnect();
559 int generateMapObjectCounter()
const;
constexpr Time timeZero
Definition: helicsTime.hpp:31
virtual const std::string & getInterfaceTag(InterfaceHandle handle, std::string_view tag) const override final
Definition: CommonCore.cpp:5257
void joinAllThreads()
Definition: BrokerBase.cpp:91
@ destination_target
indicator that the target is a destination target
Definition: flagOperations.hpp:43
@ CONNECTED
the connection process has completed
virtual void processCommand(ActionMessage &&command) override final
Definition: CommonCore.cpp:3238
virtual void removeRoute(route_id rid)=0
std::unique_ptr< Message > receive(InterfaceHandle id)
Definition: FederateState.cpp:230
InterfaceHandle source_handle
16 – for local handle or local code
Definition: ActionMessage.hpp:38
constexpr GlobalFederateId gDirectCoreId
Definition: GlobalFederateId.hpp:128
virtual void send(InterfaceHandle sourceHandle, const void *data, uint64_t length) override final
Definition: CommonCore.cpp:2053
void setLoggerFunction(std::function< void(int level, std::string_view identifier, std::string_view message)> logFunction)
Definition: BrokerBase.cpp:526
constexpr auto NO_ITERATION
simplified alias to indicate that no iterations are needed
Definition: CoreTypes.hpp:112
virtual void configureFromVector(std::vector< std::string > args) override final
Definition: CommonCore.cpp:114
const std::vector< InterfaceHandle > & getEvents() const
Definition: FederateState.cpp:906
void setExtraDestData(int32_t data)
Definition: ActionMessage.hpp:161
virtual void processCommunications(LocalFederateId federateID, std::chrono::milliseconds msToWait) override final
Definition: CommonCore.cpp:869
const std::vector< std::shared_ptr< const SmallBuffer > > & getAllValues(InterfaceHandle handle)
Definition: FederateState.cpp:273
@ processed
the message was used to update the current state
@ HALTED
indicator that the simulation has been halted
bool isRunning() const
Definition: BrokerBase.hpp:201
@ targeted_flag
flag indicating an endpoint is targeted
Definition: flagOperations.hpp:57
BasicHandleInfo * findHandle(GlobalHandle id)
Definition: HandleManager.cpp:129
@ indicator_flag
flag used for setting values
Definition: flagOperations.hpp:18
FederateStates getState() const
Definition: FederateState.cpp:174
virtual ~CommonCore() override
Definition: CommonCore.cpp:286
Time nextAllowedSendTime() const
Definition: FederateState.hpp:339
std::atomic< GlobalFederateId > global_id
global id code, default to invalid
Definition: FederateState.hpp:66
void name(std::string_view name)
Definition: ActionMessage.hpp:107
virtual double getSimulationTime() const override
Definition: CommonCore.cpp:523
virtual std::string query(std::string_view target, std::string_view queryStr, HelicsSequencingModes mode) override
Definition: CommonCore.cpp:2854
virtual InterfaceHandle getInput(LocalFederateId federateID, std::string_view key) const override final
Definition: CommonCore.cpp:1112
virtual void sendTo(InterfaceHandle sourceHandle, const void *data, uint64_t length, std::string_view destination) override final
Definition: CommonCore.cpp:1936
@ CONFIGURED
the broker itself has been configured and is ready to connect
GlobalBrokerId higher_broker_id
the id code of the broker 1 level about this broker
Definition: BrokerBase.hpp:49
bool useJsonSerialization
Definition: BrokerBase.hpp:145
std::string brokerKey
Definition: BrokerBase.hpp:71
std::shared_ptr< Core > findCore(std::string_view name)
Definition: CoreFactory.cpp:304
virtual void removeTarget(InterfaceHandle handle, std::string_view targetToRemove) override final
Definition: CommonCore.cpp:1327
virtual const std::string & getFederateName(LocalFederateId federateID) const override final
Definition: CommonCore.cpp:718
Time timeout
timeout to wait to establish a broker connection before giving up
Definition: BrokerBase.hpp:63
virtual void setHandleOption(InterfaceHandle handle, int32_t option, int32_t option_value) override final
Definition: CommonCore.cpp:1256
virtual const std::shared_ptr< const SmallBuffer > & getValue(InterfaceHandle handle, uint32_t *inputIndex) override final
Definition: CommonCore.cpp:1618
std::vector< std::pair< GlobalHandle, std::string_view > > getMessageDestinations(InterfaceHandle handle)
Definition: FederateState.cpp:597
OperatingState
Definition: CommonCore.hpp:52
@ HELICS_SEQUENCING_MODE_ORDERED
Definition: helics_enums.h:399
InterfaceInfo & interfaces()
Definition: FederateState.hpp:170
virtual const std::vector< InterfaceHandle > & getValueUpdates(LocalFederateId federateID) override final
Definition: CommonCore.cpp:1650
const std::string & lastErrorString() const
Definition: FederateState.hpp:350
@ core_flag
flag indicating that message comes from a core vs a broker
Definition: flagOperations.hpp:74
virtual void linkEndpoints(std::string_view source, std::string_view dest) override final
Definition: CommonCore.cpp:1883
const BasicHandleInfo * getFilter(std::string_view name) const
Definition: HandleManager.cpp:305
bool asyncTime
flag indicating the use of async time keeping
Definition: BrokerBase.hpp:92
virtual void addRoute(route_id rid, int interfaceId, std::string_view routeInfo)=0
virtual InterfaceHandle registerTargetedEndpoint(LocalFederateId federateID, std::string_view name, std::string_view type) override final
Definition: CommonCore.cpp:1693
bool enable_profiling
Definition: BrokerBase.hpp:146
virtual void addDependency(LocalFederateId federateID, std::string_view federateName) override final
Definition: CommonCore.cpp:1924
@ ERROR_LEVEL
only print errors
Definition: logging.hpp:23
@ DUMPLOG
only for dumplog
Definition: logging.hpp:21
action_t
Definition: ActionMessageDefintions.hpp:20
Definition: core-exceptions.hpp:39
std::unique_ptr< Message > receiveAny(InterfaceHandle &id)
Definition: FederateState.cpp:239
virtual const std::string & getInjectionType(InterfaceHandle handle) const override final
Definition: CommonCore.cpp:1214
IterationResult enterExecutingMode(IterationRequest iterate, bool sendRequest=false)
Definition: FederateState.cpp:493
virtual void setGlobal(std::string_view valueName, std::string_view value) override
Definition: CommonCore.cpp:2945
@ filter_processing_required_flag
flag indicating that the message requires processing for filters yet
Definition: flagOperations.hpp:97
Definition: core-exceptions.hpp:94
@ TERMINATING
the termination process has started
InterfaceType
Definition: CoreTypes.hpp:99
void createInterface(InterfaceType htype, InterfaceHandle handle, std::string_view key, std::string_view type, std::string_view units, uint16_t flags)
Definition: FederateState.cpp:331
virtual std::unique_ptr< Message > receive(InterfaceHandle destination) override final
Definition: CommonCore.cpp:2229
virtual void setIntegerProperty(LocalFederateId federateID, int32_t property, int16_t propertyValue) override final
Definition: CommonCore.cpp:904
int32_t getCurrentIteration() const
Definition: FederateState.cpp:179
GlobalBrokerId getGlobalId() const
Definition: BrokerBase.hpp:210
@ TERMINATING
the federate is in the process of shutting down
bool hasTimeDependency
Definition: BrokerBase.hpp:136
virtual InterfaceHandle registerFilter(std::string_view filterName, std::string_view type_in, std::string_view type_out) override final
Definition: CommonCore.cpp:1732
bool getFlagValue(int32_t flag) const
Definition: BrokerBase.cpp:426
base helics enumerations for C++ API's, a namespace wrapper for the definitions defined in helics_enu...
@ ERROR_RESULT
indicator that an error has occurred
Time getTimeProperty(int timeProperty) const
Definition: FederateState.cpp:1832
@ HELICS_LOG_LEVEL_WARNING
Definition: helics_enums.h:192
constexpr BaseType baseValue() const
Definition: LocalFederateId.hpp:30
void setAction(action_message_def::action_t newAction)
Definition: ActionMessage.cpp:142
Definition: CommonCore.hpp:74
virtual void setLogFile(std::string_view lfile) override final
Definition: CommonCore.cpp:2298
bool getOptionFlag(int optionFlag) const
Definition: FederateState.cpp:1847
void assign(const void *start, const void *end)
Definition: SmallBuffer.hpp:177
virtual void addDestinationFilterToEndpoint(std::string_view filter, std::string_view endpoint) override final
Definition: CommonCore.cpp:1915
Definition: LocalFederateId.hpp:65
@ async_timing_flag
flag indicating use of asynchronous timing on a global level
Definition: flagOperations.hpp:81
void processFilterReturn(ActionMessage &cmd)
Definition: FilterFederate.cpp:243
virtual const std::string & getIdentifier() const override final
Definition: CommonCore.cpp:187
virtual const std::vector< std::shared_ptr< const SmallBuffer > > & getAllValues(InterfaceHandle handle) override final
Definition: CommonCore.cpp:1635
TimeRepresentation< count_time< 9 > > Time
Definition: helicsTime.hpp:27
virtual const std::string & getDestinationTargets(InterfaceHandle handle) const override final
Definition: CommonCore.cpp:1490
uint64_t getQueueSize(InterfaceHandle id) const
Definition: FederateState.cpp:209
bool hasFilters
flag indicating filters come through the broker
Definition: BrokerBase.hpp:140
constexpr BaseType baseValue() const
Definition: GlobalFederateId.hpp:35
virtual Time timeRequest(LocalFederateId federateID, Time next) override final
Definition: CommonCore.cpp:764
bool sendToLogger(GlobalFederateId federateID, int logLevel, std::string_view name, std::string_view message, bool fromRemote=false) const
Definition: BrokerBase.cpp:343
std::atomic< GlobalBrokerId > global_id
Definition: BrokerBase.hpp:46
@ CONNECTING
the connection process has started
Definition: GlobalFederateId.hpp:72
Definition: ActionMessage.hpp:30
virtual void dataLink(std::string_view source, std::string_view target) override final
Definition: CommonCore.cpp:1899
FederateState * getHandleFederate(InterfaceHandle handle)
Definition: CommonCore.cpp:303
IterationResult waitSetup()
Definition: FederateState.cpp:432
int32_t maxIterationCount
the maximum number of iterative loops that are allowed
Definition: BrokerBase.hpp:61
virtual InterfaceHandle getEndpoint(LocalFederateId federateID, std::string_view name) const override final
Definition: CommonCore.cpp:1723
constexpr GlobalBrokerId parent_broker_id
Definition: GlobalFederateId.hpp:64
LocalFederateId local_id
id code for the local federate descriptor
Definition: FederateState.hpp:65
@ FILTER
handle to a filter
GlobalHandle getDest() const
Definition: ActionMessage.hpp:149
bool destinationProcessMessage(ActionMessage &command, const BasicHandleInfo *handle)
Definition: FilterFederate.cpp:404
@ HELICS_PROPERTY_INT_LOG_BUFFER
Definition: helics_enums.h:289
const friend std::string & brokerStateName(BrokerState state)
Definition: BrokerBase.cpp:965
@ has_dest_filter_flag
indicator that an endpoint or message has a destination filter
Definition: flagOperations.hpp:64
void setLoggingFile(std::string_view lfile)
Definition: BrokerBase.cpp:421
int getIntegerProperty(int intProperty) const
Definition: FederateState.cpp:1900
int parseArgs(int argc, char *argv[])
Definition: BrokerBase.cpp:268
int lastErrorCode() const noexcept
Definition: FederateState.hpp:352
virtual const std::string & getFederateTag(LocalFederateId fid, std::string_view tag) const override final
Definition: CommonCore.cpp:5294
void unregister()
Definition: CommonCore.cpp:264
@ INPUT
handle to a input interface
virtual void sendToAt(InterfaceHandle sourceHandle, const void *data, uint64_t length, std::string_view destination, Time time) override final
Definition: CommonCore.cpp:1976
bool allDisconnected() const
Definition: CommonCore.cpp:502
virtual void enterInitializingMode(LocalFederateId federateID) override final
Definition: CommonCore.cpp:558
const BasicHandleInfo * getLocalEndpoint(std::string_view name) const
Definition: CommonCore.cpp:341
std::shared_ptr< LogManager > mLogManager
object to handle the logging considerations
Definition: BrokerBase.hpp:110
void setIdentifier(std::string_view name)
Definition: CommonCore.cpp:2419
virtual void closeHandle(InterfaceHandle handle) override final
Definition: CommonCore.cpp:1310
virtual void setTimeProperty(LocalFederateId federateID, int32_t property, Time time) override final
Definition: CommonCore.cpp:930
virtual const std::string & getInterfaceInfo(InterfaceHandle handle) const override final
Definition: CommonCore.cpp:5242
virtual std::pair< std::string, std::string > getCommand(LocalFederateId federateID) override
Definition: CommonCore.cpp:2307
constexpr auto versionString
Definition: helicsVersion.hpp:18
@ HELICS_PROPERTY_INT_CONSOLE_LOG_LEVEL
Definition: helics_enums.h:287
int appendMessage(ActionMessage &m, const ActionMessage &newMessage)
Definition: ActionMessage.cpp:925
virtual void configureBase()
Definition: BrokerBase.cpp:295
uint16_t counter
26 counter for filter tracking or message counter
Definition: ActionMessage.hpp:41
virtual std::pair< std::string, std::string > waitCommand(LocalFederateId federateID) override
Definition: CommonCore.cpp:2316
@ HELICS_FLAG_OBSERVER
Definition: helics_enums.h:101
virtual void addAlias(std::string_view interfaceKey, std::string_view alias) override final
Definition: CommonCore.cpp:1891
FederateState * getFederate(std::string_view federateName) const
Definition: CommonCore.cpp:297
Definition: core-exceptions.hpp:76
virtual void setQueryCallback(LocalFederateId federateID, std::function< std::string(std::string_view)> queryFunction) override
Definition: CommonCore.cpp:2439
int32_t minChildCount
Definition: BrokerBase.hpp:60
bool no_ping
indicator that the broker is not very responsive to ping requests
Definition: BrokerBase.hpp:142
bool hasActiveTimeDependencies() const
Definition: FilterFederate.cpp:1110
virtual void addDestinationTarget(InterfaceHandle handle, std::string_view dest, InterfaceType hint) override final
Definition: CommonCore.cpp:1361
virtual bool connect() override final
Definition: CommonCore.cpp:130
void setOptionFlag(int optionFlag, bool value)
Definition: FederateState.cpp:1735
CommonCore() noexcept
Definition: CommonCore.cpp:73
virtual void addSourceFilterToEndpoint(std::string_view filter, std::string_view endpoint) override final
Definition: CommonCore.cpp:1907
Definition: core-exceptions.hpp:67
void toggleActionFlag(FlagContainer &M, FlagIndex flag)
Definition: flagOperations.hpp:160
InterfaceHandle dest_handle
24 local handle for a targeted message
Definition: ActionMessage.hpp:40
virtual int32_t getHandleOption(InterfaceHandle handle, int32_t option) const override final
Definition: CommonCore.cpp:1285
virtual int16_t getIntegerProperty(LocalFederateId federateID, int32_t property) const override final
Definition: CommonCore.cpp:955
Definition: core-exceptions.hpp:48
std::string lastErrorString
storage for last error string
Definition: BrokerBase.hpp:152
Definition: HandleManager.hpp:25
const std::string & getIdentifier() const
Definition: FederateState.hpp:166
@ HELICS_PROPERTY_INT_LOG_LEVEL
Definition: helics_enums.h:281
Definition: core/Core.hpp:41
void checkInFlightQueriesForDisconnect()
Definition: CommonCore.cpp:5017
bool globalTime
flag indicating that the broker should use a global time coordinator
Definition: BrokerBase.hpp:90
virtual void configure(std::string_view configureString) override final
Definition: CommonCore.cpp:82
void setLogLevel(int32_t level)
Definition: BrokerBase.cpp:532
void setLogger(std::function< void(int, std::string_view, std::string_view)> logFunction)
Definition: FederateState.cpp:224
virtual const std::string & getExtractionType(InterfaceHandle handle) const override final
Definition: CommonCore.cpp:1238
Definition: core-exceptions.hpp:85
Time grantedTime() const
Definition: FederateState.hpp:337
const char * commandErrorString(int errorCode)
Definition: ActionMessage.cpp:828
void addActionMessage(const ActionMessage &m)
Definition: BrokerBase.cpp:551
virtual void addSourceTarget(InterfaceHandle handle, std::string_view name, InterfaceType hint) override final
Definition: CommonCore.cpp:1429
virtual void setFederateTag(LocalFederateId fid, std::string_view tag, std::string_view value) override final
Definition: CommonCore.cpp:5313
virtual void setLoggingCallback(LocalFederateId federateID, std::function< void(int, std::string_view, std::string_view)> logFunction) override final
Definition: CommonCore.cpp:2325
@ HALTED
indicator that the simulation has been halted
virtual std::string generateLocalAddressString() const =0
Definition: FilterFederate.hpp:33
virtual uint64_t receiveCount(InterfaceHandle destination) override final
Definition: CommonCore.cpp:2220
virtual LocalFederateId getFederateId(std::string_view name) const override final
Definition: CommonCore.cpp:744
@ disconnected_flag
flag indicating that a broker/federate is disconnected
Definition: flagOperations.hpp:85
constexpr GlobalBrokerId gRootBrokerID
Definition: GlobalFederateId.hpp:66
virtual iteration_time requestTimeIterative(LocalFederateId federateID, Time next, IterationRequest iterate) override final
Definition: CommonCore.cpp:812
virtual bool isConfigured() const override final
Definition: CommonCore.cpp:357
Definition: GlobalFederateId.hpp:184
@ has_source_filter_flag
indicator that an endpoint or message has a source filter
Definition: flagOperations.hpp:60
virtual bool waitForDisconnect(std::chrono::milliseconds msToWait=std::chrono::milliseconds(0)) const override final
Definition: CommonCore.cpp:255
std::unique_ptr< BaseTimeCoordinator > timeCoord
object managing the time control
Definition: BrokerBase.hpp:108
@ INITIALIZING
the enter initialization process has started
std::pair< std::string, std::string > waitCommand()
Definition: FederateState.cpp:2166
virtual Time getTimeProperty(LocalFederateId federateID, int32_t property) const override final
Definition: CommonCore.cpp:946
IterationRequest
Definition: CoreTypes.hpp:92
bool allInitReady() const
Definition: CommonCore.cpp:486
virtual InterfaceHandle getTranslator(std::string_view name) const override final
Definition: CommonCore.cpp:1865
int32_t messageID
8 – message ID for a variety of purposes
Definition: ActionMessage.hpp:36
virtual bool getFlagOption(LocalFederateId federateID, int32_t flag) const override final
Definition: CommonCore.cpp:1025
virtual InterfaceHandle registerTranslator(std::string_view translatorName, std::string_view endpointType, std::string_view units) override final
Definition: CommonCore.cpp:1812
void setActionFlag(FlagContainer &M, FlagIndex flag)
Definition: flagOperations.hpp:130
virtual void sendMessage(InterfaceHandle sourceHandle, std::unique_ptr< Message > message) override final
Definition: CommonCore.cpp:2104
@ CONFIGURING
the broker is in the processing of configuring
virtual void setFlagOption(LocalFederateId federateID, int32_t flag, bool flagValue=true) override final
Definition: CommonCore.cpp:977
virtual void setInterfaceTag(InterfaceHandle handle, std::string_view tag, std::string_view value) override final
Definition: CommonCore.cpp:5266
void setQueryCallback(std::function< std::string(std::string_view)> queryCallbackFunction)
Definition: FederateState.hpp:426
virtual const std::string & getHandleName(InterfaceHandle handle) const override final
Definition: CommonCore.cpp:1168
decltype(std::chrono::steady_clock::now()) disconnectTime
time when the disconnect started
Definition: BrokerBase.hpp:150
Definition: CommonCore.hpp:58
Definition: BasicHandleInfo.hpp:20
virtual InterfaceHandle registerPublication(LocalFederateId federateID, std::string_view key, std::string_view type, std::string_view units) override final
Definition: CommonCore.cpp:1121
std::vector< std::pair< int, int > > intProps
container for the integer properties
Definition: CoreFederateInfo.hpp:19
@ non_counting_flag
flag indicating that a federate should not count in any totals
Definition: flagOperations.hpp:90
virtual void finalize(LocalFederateId federateID) override final
Definition: CommonCore.cpp:456
@ CONNECTED_ERROR
error state but still connected
void setProperties(const ActionMessage &cmd)
Definition: FederateState.cpp:1550
IterationResult
Definition: CoreTypes.hpp:83
bool enteredExecutionMode
flag indicating that the broker has entered execution mode
Definition: BrokerBase.hpp:138
Definition: GlobalFederateId.hpp:27
virtual void sendCommand(std::string_view target, std::string_view commandStr, std::string_view source, HelicsSequencingModes mode) override
Definition: CommonCore.cpp:2955
uint16_t getInterfaceFlags() const
Definition: FederateState.hpp:226
@ ITERATE_IF_NEEDED
indicator that the iterations need to continue
void processMessageFilter(ActionMessage &cmd)
Definition: FilterFederate.cpp:70
SmallBuffer payload
buffer to contain the data payload
Definition: ActionMessage.hpp:48
BasicHandleInfo * getHandleInfo(int32_t index)
Definition: HandleManager.cpp:93
bool terminate_on_error
flag indicating that the federation should halt on any error
Definition: BrokerBase.hpp:84
std::atomic< int > lastErrorCode
storage for last error code
Definition: BrokerBase.hpp:151
@ TRANSLATOR
handle to a translator object
GlobalFederateId dest_id
20 fed_id for a targeted message
Definition: ActionMessage.hpp:39
virtual void transmit(route_id rid, const ActionMessage &command)=0
virtual const std::string & getExtractionUnits(InterfaceHandle handle) const override final
Definition: CommonCore.cpp:1199
HelicsSequencingModes
Definition: helics_enums.h:395
virtual std::string getErrorMessage() const override final
Definition: CommonCore.cpp:449
virtual LocalFederateId registerFederate(std::string_view name, const CoreFederateInfo &info) override final
Definition: CommonCore.cpp:638
virtual const std::string & getSourceTargets(InterfaceHandle handle) const override final
Definition: CommonCore.cpp:1521
void processCommunications(std::chrono::milliseconds period)
Definition: FederateState.cpp:880
BasicHandleInfo * getEndpoint(std::string_view name)
Definition: HandleManager.cpp:203
constexpr InterfaceHandle gDirectSendHandle
this special handle can be used to directly send a message in a core
Definition: LocalFederateId.hpp:96
virtual void processPriorityCommand(ActionMessage &&command) override final
Definition: CommonCore.cpp:2983
std::string prettyPrintString(const ActionMessage &command)
Definition: ActionMessage.cpp:846
std::pair< bool, std::vector< std::string_view > > processBaseCommands(ActionMessage &command)
Definition: BrokerBase.cpp:439
virtual void disconnect() override final
Definition: CommonCore.cpp:229
@ HELICS_LOG_LEVEL_DATA
Definition: helics_enums.h:203
uint16_t flags
28 set of messageFlags
Definition: ActionMessage.hpp:42
bool isDisconnectCommand(const ActionMessage &command) noexcept
Definition: ActionMessage.hpp:277
constexpr BaseType baseValue() const
Definition: LocalFederateId.hpp:73
virtual void setFilterOperator(InterfaceHandle filter, std::shared_ptr< FilterOperator > callback) override final
Definition: CommonCore.cpp:2372
FederateState * getFederateAt(LocalFederateId federateID) const
Definition: CommonCore.cpp:291
virtual void setCoreReadyToInit() override final
Definition: CommonCore.cpp:528
@ ERROR_RESULT
indicator that an error has occurred
InterfaceHandle getInterfaceHandle() const
Definition: BasicHandleInfo.hpp:51
@ observer_flag
flag indicating that a federate is an observer only
Definition: flagOperations.hpp:83
virtual void setTranslatorOperator(InterfaceHandle translator, std::shared_ptr< TranslatorOperator > callbacks) override final
Definition: CommonCore.cpp:2394
virtual IterationResult enterExecutingMode(LocalFederateId federateID, IterationRequest iterate=NO_ITERATION) override final
Definition: CommonCore.cpp:593
virtual void configureFromArgs(int argc, char *argv[]) override final
Definition: CommonCore.cpp:98
void writeProfilingData()
Definition: BrokerBase.cpp:385
std::pair< std::string, std::string > getCommand()
Definition: FederateState.cpp:2151
virtual void makeConnections(const std::string &file) override final
Definition: CommonCore.cpp:1874
virtual int getErrorCode() const override final
Definition: CommonCore.cpp:444
void addBaseInformation(Json::Value &base, bool hasParent) const
Definition: BrokerBase.cpp:510
constexpr uint16_t make_flags(unsigned int flag)
Definition: flagOperations.hpp:170
constexpr GlobalFederateId getSpecialFederateId(GlobalBrokerId broker, GlobalBrokerId::BaseType index)
Definition: GlobalFederateId.hpp:131
MessageProcessingResult
Definition: CoreTypes.hpp:64
@ CREATED
the broker has been created
virtual void setValue(InterfaceHandle handle, const char *data, uint64_t len) override final
Definition: CommonCore.cpp:1554
virtual std::unique_ptr< Message > receiveAny(LocalFederateId federateID, InterfaceHandle &endpoint_id) override final
Definition: CommonCore.cpp:2242
Definition: FederateState.hpp:47
void saveProfilingData(std::string_view message)
Definition: BrokerBase.cpp:376
@ nameless_interface_flag
flag to indicate an interface is nameless
Definition: flagOperations.hpp:68
Time actionTime
40 the time an action took place or will take place //32
Definition: ActionMessage.hpp:44
@ parent_flag
flag indicating the message is from a parent object
Definition: flagOperations.hpp:32
constexpr bool isValid() const
Definition: GlobalFederateId.hpp:109
void setLogLevels(int32_t consoleLevel, int32_t fileLevel)
Definition: BrokerBase.cpp:545
std::atomic< bool > init_requested
Definition: FederateState.hpp:109
std::string generateInterfaceQueryResults(std::string_view request, const HandleManager &handles, const GlobalFederateId fed, const std::function< void(Json::Value &)> &addHeaderInfo)
Definition: queryHelpers.cpp:208
@ TERMINATED
the termination process has started
void unregisterCore(std::string_view name)
Definition: CoreFactory.cpp:392
LocalFederateId local_fed_id
the local federate id of the handle
Definition: BasicHandleInfo.hpp:39
int loggingLevel() const
Definition: FederateState.cpp:2351
@ slow_responding_flag
flag indicating a federate, core or broker is slow responding
Definition: flagOperations.hpp:88
@ ERRORED
an error was encountered
Time tickTimer
the length of each heartbeat tick
Definition: BrokerBase.hpp:62
void setDestination(GlobalHandle hand)
Definition: ActionMessage.hpp:99
virtual bool isOpenToNewFederates() const override final
Definition: CommonCore.cpp:362
IterationResult enterInitializingMode()
Definition: FederateState.cpp:461
the main namespace for the helics co-simulation library User functions will be in the helics namespac...
Definition: AsyncFedCallInfo.hpp:14
@ ENDPOINT
handle to an endpoint
bool debugging
flag indicating operation in a user debugging mode
Definition: BrokerBase.hpp:86
virtual InterfaceHandle getFilter(std::string_view name) const override final
Definition: CommonCore.cpp:1856
Definition: CoreFederateInfo.hpp:16
Definition: helicsTime.hpp:49
@ HELICS_SEQUENCING_MODE_FAST
Definition: helics_enums.h:397
void clearActionFlag(FlagContainer &M, FlagIndex flag)
Definition: flagOperations.hpp:153
virtual void logMessage(LocalFederateId federateID, int logLevel, std::string_view messageToLog) override final
Definition: CommonCore.cpp:2269
const std::string & getSourceTargets() const
Definition: EndpointInfo.cpp:217
virtual void setInterfaceInfo(InterfaceHandle handle, std::string_view info) override final
Definition: CommonCore.cpp:5251
Time queryTimeout
Definition: BrokerBase.hpp:65
void logMessage(int level, std::string_view logMessageSource, std::string_view message, bool fromRemote=false) const
Definition: FederateState.cpp:2006
Definition: core-exceptions.hpp:29
virtual Time getCurrentTime(LocalFederateId federateID) const override final
Definition: CommonCore.cpp:886
virtual InterfaceHandle registerEndpoint(LocalFederateId federateID, std::string_view name, std::string_view type) override final
Definition: CommonCore.cpp:1659
@ global_timing_flag
flag indicating to use global timing (overload of indicator flag)
Definition: flagOperations.hpp:76
bool checkActionFlag(uint16_t flags, FlagIndex flag)
Definition: flagOperations.hpp:138
virtual void processDisconnect(bool skipUnregister=false) override final
Definition: CommonCore.cpp:200
@ NEXT_STEP
indicator that the iterations have completed
@ EXECUTING
the federation has entered execution state and it now advancing in time
Definition: LocalFederateId.hpp:22
@ FINISHED
the federation has finished its execution
@ WARNING
print/log warning and errors
Definition: logging.hpp:25
virtual InterfaceHandle registerInput(LocalFederateId federateID, std::string_view key, std::string_view type, std::string_view units) override final
Definition: CommonCore.cpp:1074
void addAction(const ActionMessage &action)
Definition: FederateState.cpp:317
void setTickForwarding(TickForwardingReasons reason, bool value=true)
Definition: BrokerBase.cpp:858
OperatingState minFederateState() const
Definition: CommonCore.cpp:512
@ use_json_serialization_flag
flag to indicate it should use the json packetization
Definition: flagOperations.hpp:79
Definition: TimeoutMonitor.h:27
@ clone_flag
flag indicating the filter is a clone filter or the data needs to be cloned
Definition: flagOperations.hpp:55
void setParent(CommonCore *coreObject)
Definition: FederateState.hpp:205
@ PROFILING
profiling log level
Definition: logging.hpp:24
iteration_time requestTime(Time nextTime, IterationRequest iterate, bool sendRequest=false)
Definition: FederateState.cpp:606
static bool isReasonForTick(std::uint32_t code, TickForwardingReasons reason)
Definition: BrokerBase.hpp:230
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
Definition: application_api/Federate.hpp:28
@ OPERATING
normal operating conditions
bool hasActiveTimeDependencies() const
Definition: TranslatorFederate.cpp:478
void processDestFilterReturn(ActionMessage &command)
Definition: FilterFederate.cpp:296
bool observer
flag indicating that the broker is an observer only
Definition: BrokerBase.hpp:88
const std::string & stateString(OperatingState state)
Definition: CommonCore.cpp:56
virtual int32_t getFederationSize() override final
Definition: CommonCore.cpp:755
action_message_def::action_t action() const noexcept
Definition: ActionMessage.hpp:88
@ HELICS_PROPERTY_INT_FILE_LOG_LEVEL
Definition: helics_enums.h:284
const std::shared_ptr< const SmallBuffer > & getValue(InterfaceHandle handle, uint32_t *inputIndex)
Definition: FederateState.cpp:266
virtual uint64_t receiveCountAny(LocalFederateId federateID) override final
Definition: CommonCore.cpp:2256
gmlc::containers::BlockingPriorityQueue< ActionMessage > actionQueue
primary routing queue
Definition: BrokerBase.hpp:109
constexpr LocalFederateId gLocalCoreId(-259)
@ error_flag
flag indicating an error condition associated with the command
Definition: flagOperations.hpp:17
@ FED
special logging command for message coming from a fed
Definition: logging.hpp:35
int32_t minFederateCount
Definition: BrokerBase.hpp:54
virtual const std::string & getAddress() const override final
Definition: CommonCore.cpp:192
std::vector< GlobalHandle > getSubscribers(InterfaceHandle handle)
Definition: FederateState.cpp:586
@ TERMINATING_ERROR
the termination process has started while in an error state
virtual InterfaceHandle getPublication(LocalFederateId federateID, std::string_view key) const override final
Definition: CommonCore.cpp:1159
std::string identifier
an identifier for the broker
Definition: BrokerBase.hpp:70
const std::string & getDestinationTargets() const
Definition: EndpointInfo.cpp:236
@ NO_ITERATIONS
indicator that the iterations have completed
virtual void sendAt(InterfaceHandle sourceHandle, const void *data, uint64_t length, Time time) override final
Definition: CommonCore.cpp:2078
BasicHandleInfo * getPublication(std::string_view name)
Definition: HandleManager.cpp:247
Definition: BrokerBase.hpp:42
void setErrorState(int eCode, std::string_view estring)
Definition: BrokerBase.cpp:396
virtual bool isConnected() const override final
Definition: CommonCore.cpp:180
virtual InterfaceHandle registerCloningFilter(std::string_view filterName, std::string_view type_in, std::string_view type_out) override final
Definition: CommonCore.cpp:1769
bool isPriorityCommand(const ActionMessage &command) noexcept
Definition: ActionMessage.hpp:232
virtual const std::string & getInjectionUnits(InterfaceHandle handle) const override final
Definition: CommonCore.cpp:1177
std::string errorMessageString(const ActionMessage &command)
Definition: ActionMessage.cpp:834
TranslatorInfo * createTranslator(GlobalBrokerId dest, InterfaceHandle handle, std::string_view key, std::string_view endpointType, std::string_view units)
Definition: TranslatorFederate.cpp:289
std::string address
network location of the broker
Definition: BrokerBase.hpp:76
@ ERRORED
the federation has encountered an error
const BasicHandleInfo * getHandleInfo(InterfaceHandle handle) const
Definition: CommonCore.cpp:336
void setSource(GlobalHandle hand)
Definition: ActionMessage.hpp:93
Definition: core-exceptions.hpp:18
void addAlias(std::string_view interfaceName, std::string_view alias)
Definition: HandleManager.cpp:369
virtual void setLoggingLevel(int logLevel) override
Definition: CommonCore.cpp:2289
Definition: TranslatorFederate.hpp:32
bool checkAndSetValue(InterfaceHandle pub_id, const char *data, uint64_t len)
Definition: FederateState.cpp:184
const std::string & fedStateString(FederateStates state)
Definition: FederateState.cpp:2035
@ PUBLICATION
handle to output interface
int32_t getHandleOption(InterfaceHandle handle, char iType, int32_t option) const
Definition: FederateState.cpp:1884
GlobalFederateId source_id
12 – for federate_id or route_id
Definition: ActionMessage.hpp:37
GlobalBrokerId global_broker_id_local
Definition: BrokerBase.hpp:47
void bufferToJson(const LogBuffer &buffer, Json::Value &base)
Definition: LogBuffer.cpp:60
@ child_flag
flag indicating a message is from a child object
Definition: flagOperations.hpp:35
bool isValidIndex(sizeType testSize, const SizedDataType &vec)
Definition: core-data.hpp:171
void setIterationFlags(ActionMessage &command, IterationRequest iterate)
Definition: ActionMessage.cpp:936
std::string generateJsonErrorResponse(JsonErrorCodes code, const std::string &message)
Definition: JsonGeneration.hpp:36
virtual uint64_t getCurrentReiteration(LocalFederateId federateID) const override final
Definition: CommonCore.cpp:895