helics  3.5.2
CommonCore.hpp
1 /*
2 Copyright (c) 2017-2024,
3 Battelle Memorial Institute; Lawrence Livermore National Security, LLC; Alliance for Sustainable
4 Energy, LLC. See the top-level NOTICE for additional details. All rights reserved.
5 SPDX-License-Identifier: BSD-3-Clause
6 */
7 #pragma once
8 
9 #include "../common/GuardedTypes.hpp"
10 #include "../common/JsonBuilder.hpp"
11 #include "ActionMessage.hpp"
12 #include "BrokerBase.hpp"
13 #include "Core.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"
23 #include "helicsTime.hpp"
24 
25 #include "json/forwards.h"
26 #include <any>
27 #include <array>
28 #include <atomic>
29 #include <chrono>
30 #include <deque>
31 #include <map>
32 #include <memory>
33 #include <set>
34 #include <string>
35 #include <tuple>
36 #include <unordered_map>
37 #include <utility>
38 #include <vector>
39 
40 namespace helics {
41 class TestHandle;
42 class FederateState;
43 
44 class BasicHandleInfo;
45 class FilterCoordinator;
46 class FilterInfo;
47 class FilterFederate;
48 class TranslatorFederate;
49 class TimeoutMonitor;
50 enum class InterfaceType : char;
51 enum class QueryReuse : std::uint8_t;
53 enum class OperatingState : std::uint8_t { OPERATING = 0, ERROR_STATE = 5, DISCONNECTED = 10 };
54 
56 const std::string& stateString(OperatingState state);
57 
59 class FedInfo {
60  public:
61  FederateState* fed = nullptr;
62  OperatingState state{OperatingState::OPERATING};
63 
64  constexpr FedInfo() = default;
65  constexpr explicit FedInfo(FederateState* newfed) noexcept: fed(newfed) {}
66  FederateState* operator->() noexcept { return fed; }
67  const FederateState* operator->() const noexcept { return fed; }
68  operator bool() const noexcept { return (fed != nullptr); }
69 };
70 
75 class CommonCore: public Core, public BrokerBase {
76  public:
78  CommonCore() noexcept;
81  explicit CommonCore(bool arg) noexcept;
83  explicit CommonCore(std::string_view coreName);
85  virtual ~CommonCore() override;
86  virtual void configure(std::string_view configureString) override final;
87  virtual void configureFromArgs(int argc, char* argv[]) override final;
88  virtual void configureFromVector(std::vector<std::string> args) override final;
89  virtual bool isConfigured() const override final;
90  virtual bool isOpenToNewFederates() const override final;
91  virtual bool hasError() const override final;
92  virtual void globalError(LocalFederateId federateID,
93  int errorCode,
94  std::string_view errorString) override final;
95  virtual void localError(LocalFederateId federateID,
96  int errorCode,
97  std::string_view errorString) override final;
98  virtual int getErrorCode() const override final;
99  virtual std::string getErrorMessage() const override final;
100  virtual void finalize(LocalFederateId federateID) override final;
101  virtual bool enterInitializingMode(LocalFederateId federateID,
102  IterationRequest request) override final;
103  virtual void setCoreReadyToInit() override final;
104  virtual iteration_time
106  IterationRequest iterate = NO_ITERATION) override final;
107  virtual LocalFederateId registerFederate(std::string_view name,
108  const CoreFederateInfo& info) override final;
109  virtual const std::string& getFederateName(LocalFederateId federateID) const override final;
110  virtual LocalFederateId getFederateId(std::string_view name) const override final;
111  virtual int32_t getFederationSize() override final;
112  virtual Time timeRequest(LocalFederateId federateID, Time next) override final;
114  Time next,
115  IterationRequest iterate) override final;
116  virtual void processCommunications(LocalFederateId federateID,
117  std::chrono::milliseconds msToWait) override final;
118  virtual Time getCurrentTime(LocalFederateId federateID) const override final;
119  virtual void
120  setTimeProperty(LocalFederateId federateID, int32_t property, Time time) override final;
121  virtual void setIntegerProperty(LocalFederateId federateID,
122  int32_t property,
123  int16_t propertyValue) override final;
124  virtual Time getTimeProperty(LocalFederateId federateID, int32_t property) const override final;
125  virtual int16_t getIntegerProperty(LocalFederateId federateID,
126  int32_t property) const override final;
127  virtual void setFlagOption(LocalFederateId federateID,
128  int32_t flag,
129  bool flagValue = true) override final;
130  virtual bool getFlagOption(LocalFederateId federateID, int32_t flag) const override final;
131 
133  std::string_view key,
134  std::string_view type,
135  std::string_view units) override final;
137  std::string_view key) const override final;
138  virtual InterfaceHandle registerInput(LocalFederateId federateID,
139  std::string_view key,
140  std::string_view type,
141  std::string_view units) override final;
142 
143  virtual InterfaceHandle getInput(LocalFederateId federateID,
144  std::string_view key) const override final;
145 
146  virtual const std::string& getHandleName(InterfaceHandle handle) const override final;
147 
148  virtual void setHandleOption(InterfaceHandle handle,
149  int32_t option,
150  int32_t option_value) override final;
151 
152  virtual int32_t getHandleOption(InterfaceHandle handle, int32_t option) const override final;
153  virtual void closeHandle(InterfaceHandle handle) override final;
154  virtual void removeTarget(InterfaceHandle handle,
155  std::string_view targetToRemove) override final;
156  virtual void addDestinationTarget(InterfaceHandle handle,
157  std::string_view dest,
158  InterfaceType hint) override final;
159  virtual void addSourceTarget(InterfaceHandle handle,
160  std::string_view name,
161  InterfaceType hint) override final;
162  virtual const std::string& getDestinationTargets(InterfaceHandle handle) const override final;
163 
164  virtual const std::string& getSourceTargets(InterfaceHandle handle) const override final;
165  virtual const std::string& getInjectionUnits(InterfaceHandle handle) const override final;
166  virtual const std::string& getExtractionUnits(InterfaceHandle handle) const override final;
167  virtual const std::string& getInjectionType(InterfaceHandle handle) const override final;
168  virtual const std::string& getExtractionType(InterfaceHandle handle) const override final;
169  virtual void setValue(InterfaceHandle handle, const char* data, uint64_t len) override final;
170  virtual const std::shared_ptr<const SmallBuffer>& getValue(InterfaceHandle handle,
171  uint32_t* inputIndex) override final;
172  virtual const std::vector<std::shared_ptr<const SmallBuffer>>&
173  getAllValues(InterfaceHandle handle) override final;
174  virtual const std::vector<InterfaceHandle>&
175  getValueUpdates(LocalFederateId federateID) override final;
177  std::string_view name,
178  std::string_view type) override final;
179 
181  std::string_view name,
182  std::string_view type) override final;
183  virtual InterfaceHandle getEndpoint(LocalFederateId federateID,
184  std::string_view name) const override final;
185 
187  std::string_view name) override final;
188 
189  virtual InterfaceHandle getDataSink(LocalFederateId federateID,
190  std::string_view name) const override final;
191 
192  virtual InterfaceHandle registerFilter(std::string_view filterName,
193  std::string_view type_in,
194  std::string_view type_out) override final;
195  virtual InterfaceHandle registerCloningFilter(std::string_view filterName,
196  std::string_view type_in,
197  std::string_view type_out) override final;
198  virtual InterfaceHandle registerTranslator(std::string_view translatorName,
199  std::string_view endpointType,
200  std::string_view units) override final;
201  virtual InterfaceHandle getFilter(std::string_view name) const override final;
202  virtual InterfaceHandle getTranslator(std::string_view name) const override final;
203  virtual void addDependency(LocalFederateId federateID,
204  std::string_view federateName) override final;
205  virtual void linkEndpoints(std::string_view source, std::string_view dest) override final;
206  virtual void addAlias(std::string_view interfaceKey, std::string_view alias) override final;
207  virtual void makeConnections(const std::string& file) override final;
208  virtual void dataLink(std::string_view source, std::string_view target) override final;
209  virtual void addSourceFilterToEndpoint(std::string_view filter,
210  std::string_view endpoint) override final;
211  virtual void addDestinationFilterToEndpoint(std::string_view filter,
212  std::string_view endpoint) override final;
213  virtual void
214  send(InterfaceHandle sourceHandle, const void* data, uint64_t length) override final;
215  virtual void sendAt(InterfaceHandle sourceHandle,
216  const void* data,
217  uint64_t length,
218  Time time) override final;
219  virtual void sendTo(InterfaceHandle sourceHandle,
220  const void* data,
221  uint64_t length,
222  std::string_view destination) override final;
223  virtual void sendToAt(InterfaceHandle sourceHandle,
224  const void* data,
225  uint64_t length,
226  std::string_view destination,
227  Time time) override final;
228  virtual void sendMessage(InterfaceHandle sourceHandle,
229  std::unique_ptr<Message> message) override final;
230  virtual uint64_t receiveCount(InterfaceHandle destination) override final;
231  virtual std::unique_ptr<Message> receive(InterfaceHandle destination) override final;
232  virtual std::unique_ptr<Message> receiveAny(LocalFederateId federateID,
233  InterfaceHandle& endpoint_id) override final;
234  virtual uint64_t receiveCountAny(LocalFederateId federateID) override final;
235  virtual void logMessage(LocalFederateId federateID,
236  int logLevel,
237  std::string_view messageToLog) override final;
238  virtual void setFilterOperator(InterfaceHandle filter,
239  std::shared_ptr<FilterOperator> callback) override final;
240  virtual void
242  std::shared_ptr<TranslatorOperator> callbacks) override final;
243  virtual void setFederateOperator(LocalFederateId federateID,
244  std::shared_ptr<FederateOperator> callback) override;
246  void setIdentifier(std::string_view name);
248  virtual const std::string& getIdentifier() const override final;
249  virtual const std::string& getAddress() const override final;
250  const std::string& getFederateNameNoThrow(GlobalFederateId federateID) const noexcept;
251 
253  virtual void setLoggingLevel(int logLevel) override;
254  virtual void setLoggingCallback(
255  LocalFederateId federateID,
256  std::function<void(int, std::string_view, std::string_view)> logFunction) override final;
257 
258  virtual void setLogFile(std::string_view lfile) override final;
259 
260  virtual std::string query(std::string_view target,
261  std::string_view queryStr,
262  HelicsSequencingModes mode) override;
263  virtual void setQueryCallback(LocalFederateId federateID,
264  std::function<std::string(std::string_view)> queryFunction,
265  int order) override;
266  virtual void setGlobal(std::string_view valueName, std::string_view value) override;
267  virtual void sendCommand(std::string_view target,
268  std::string_view commandStr,
269  std::string_view source,
270  HelicsSequencingModes mode) override;
271  virtual std::pair<std::string, std::string> getCommand(LocalFederateId federateID) override;
272 
273  virtual std::pair<std::string, std::string> waitCommand(LocalFederateId federateID) override;
274 
275  virtual bool connect() override final;
276  virtual bool isConnected() const override final;
277  virtual void disconnect() override final;
278  virtual bool waitForDisconnect(
279  std::chrono::milliseconds msToWait = std::chrono::milliseconds(0)) const override final;
281  void unregister();
284  virtual void processDisconnect(bool skipUnregister = false) override final;
285 
289 
291  virtual void setInterfaceInfo(InterfaceHandle handle, std::string_view info) override final;
293  virtual const std::string& getInterfaceInfo(InterfaceHandle handle) const override final;
294 
295  virtual void setInterfaceTag(InterfaceHandle handle,
296  std::string_view tag,
297  std::string_view value) override final;
298  virtual const std::string& getInterfaceTag(InterfaceHandle handle,
299  std::string_view tag) const override final;
300 
301  virtual void setFederateTag(LocalFederateId fid,
302  std::string_view tag,
303  std::string_view value) override final;
304  virtual const std::string& getFederateTag(LocalFederateId fid,
305  std::string_view tag) const override final;
306 
307  private:
310  virtual bool brokerConnect() = 0;
313  virtual void brokerDisconnect() = 0;
314 
315  protected:
316  virtual void processCommand(ActionMessage&& command) override final;
317 
318  virtual void processPriorityCommand(ActionMessage&& command) override final;
319 
323  virtual void transmit(route_id rid, const ActionMessage& command) = 0;
327  virtual void transmit(route_id rid, ActionMessage&& command) = 0;
334  virtual void addRoute(route_id rid, int interfaceId, std::string_view routeInfo) = 0;
338  virtual void removeRoute(route_id rid) = 0;
340  FederateState* getFederateAt(LocalFederateId federateID) const;
342  FederateState* getFederate(std::string_view federateName) const;
347  const BasicHandleInfo* getHandleInfo(InterfaceHandle handle) const;
349  const BasicHandleInfo* getLocalEndpoint(std::string_view name) const;
350 
352  bool allInitReady() const;
354  bool allDisconnected() const;
357 
358  virtual double getSimulationTime() const override;
359 
360  private:
362  FederateState* getFederateCore(GlobalFederateId federateID);
364  FederateState* getFederateCore(std::string_view federateName);
368  FederateState* getHandleFederateCore(InterfaceHandle handle);
369 
370  private:
371  std::atomic<double> simTime{BrokerBase::mInvalidSimulationTime};
372  GlobalFederateId keyFed{};
373  std::string prevIdentifier;
375  std::map<GlobalFederateId, route_id> routing_table;
377  gmlc::containers::SimpleQueue<ActionMessage> delayTransmitQueue;
379  std::unordered_map<std::string, route_id> knownExternalEndpoints;
380  std::vector<std::pair<std::string, std::string>> tags;
382  std::unique_ptr<TimeoutMonitor> timeoutMon;
384  void transmitDelayedMessages();
386  void errorRespondDelayedMessages(std::string_view estring);
390  void transmitDelayedMessages(GlobalFederateId source);
391 
393  void routeMessage(ActionMessage& cmd, GlobalFederateId dest);
396  void routeMessage(const ActionMessage& cmd);
397 
399  void routeMessage(ActionMessage&& cmd, GlobalFederateId dest);
402  void routeMessage(ActionMessage&& cmd);
404  FederateState*
405  checkNewInterface(LocalFederateId federateID, std::string_view key, InterfaceType type);
407  void checkDependencies();
409  void processQueryResponse(const ActionMessage& message);
411  void checkQueryTimeouts();
413  void processCommandsForCore(const ActionMessage& cmd);
415  void processCoreConfigureCommands(ActionMessage& cmd);
417  void processInitRequest(ActionMessage& cmd);
419  void processExecRequest(ActionMessage& cmd);
421  void processDisconnectCommand(ActionMessage& cmd);
422 
424  void processTimingTick(ActionMessage& cmd);
426  void processQueryCommand(ActionMessage& cmd);
428  void processLogAndErrorCommand(ActionMessage& cmd);
430  void processLinkingCommand(ActionMessage& cmd);
433  bool checkForLocalPublication(ActionMessage& cmd);
435  uint16_t getNextAirlockIndex();
437  void loadBasicJsonInfo(
438  Json::Value& base,
439  const std::function<void(Json::Value& fedval, const FedInfo& fed)>& fedLoader) const;
446  void initializeMapBuilder(std::string_view request,
447  std::uint16_t index,
448  QueryReuse reuse,
449  bool force_ordering) const;
451  std::string coreQuery(std::string_view queryStr, bool force_ordering) const;
452 
455  std::string quickCoreQueries(std::string_view queryStr) const;
456 
458  std::string filteredEndpointQuery(const FederateState* fed) const;
460  void processCommandInstruction(ActionMessage& command);
461 
462  private:
463  int32_t mGlobalFederationSize{0};
465  std::atomic<int16_t> delayInitCounter{0};
466  bool filterTiming{false};
470  gmlc::containers::DualStringMappedVector<FedInfo, GlobalFederateId> loopFederates;
471 
474  std::atomic<int32_t> messageCounter{54};
475  ordered_guarded<HandleManager> handles;
477  HandleManager loopHandles;
479  std::vector<std::pair<GlobalFederateId, int32_t>> timeBlocks;
480  TranslatorFederate* translatorFed{nullptr};
481  std::atomic<std::thread::id> translatorThread{std::thread::id{}};
482  std::atomic<GlobalFederateId> translatorFedID;
483 
485  std::map<int32_t, std::vector<ActionMessage>> delayedTimingMessages;
486 
488  std::atomic<int> queryCounter{1};
490  gmlc::concurrency::DelayedObjects<std::string> activeQueries;
492  std::deque<std::pair<int32_t, decltype(std::chrono::steady_clock::now())>> queryTimeouts;
494  mutable std::vector<std::tuple<fileops::JsonMapBuilder, std::vector<ActionMessage>, QueryReuse>>
495  mapBuilders;
496 
497  FilterFederate* filterFed{nullptr};
498  std::atomic<std::thread::id> filterThread{std::thread::id{}};
499  std::atomic<GlobalFederateId> filterFedID;
500  std::atomic<uint16_t> nextAirLock{0};
502  std::array<gmlc::containers::AirLock<std::any>, 4> dataAirlocks;
503  gmlc::concurrency::TriggerVariable disconnection;
505  std::atomic<bool> initIterations{false};
506 
507  private:
508  // generate a filter Federate
509  void generateFilterFederate();
510  // generate a translator Federate
511  void generateTranslatorFederate();
512  // generate a timing connection between the core and filter Federate
513  void connectFilterTiming();
515  bool hasTimeBlock(GlobalFederateId federateID);
517  bool waitCoreRegistration();
519  void generateMessages(ActionMessage& message,
520  const std::vector<std::pair<GlobalHandle, std::string_view>>& targets);
522  void deliverMessage(ActionMessage& message);
524  ActionMessage& processMessage(ActionMessage& message);
528  const BasicHandleInfo& createBasicHandle(GlobalFederateId global_federateId,
529  LocalFederateId local_federateId,
530  InterfaceType HandleType,
531  std::string_view key,
532  std::string_view type,
533  std::string_view units,
534  uint16_t flags = 0);
535 
539  bool isLocal(GlobalFederateId global_fedid) const;
543  route_id getRoute(GlobalFederateId global_fedid) const;
545  void checkForNamedInterface(ActionMessage& command);
547  void removeNamedTarget(ActionMessage& command);
550  void setAsUsed(BasicHandleInfo* hand);
552  void registerInterface(ActionMessage& command);
554  void addTargetToInterface(ActionMessage& command);
556  void removeTargetFromInterface(ActionMessage& command);
558  void disconnectInterface(ActionMessage& command);
560  void manageTimeBlocks(const ActionMessage& command);
561 
568  std::string federateQuery(const FederateState* fed,
569  std::string_view queryStr,
570  bool force_ordering) const;
571 
573  void sendErrorToFederates(int errorCode, std::string_view message);
575  bool checkAndProcessDisconnect();
577  void sendDisconnect(action_message_def::action_t disconnectType = CMD_STOP);
579  void broadcastToFederates(ActionMessage& cmd);
581  int generateMapObjectCounter() const;
582  friend class TimeoutMonitor;
583 };
584 
585 } // namespace helics
constexpr auto NO_ITERATION
simplified alias to indicate that no iterations are needed
Definition: CoreTypes.hpp:127
Definition: application_api/Federate.hpp:27
Definition: ActionMessage.hpp:30
Definition: BasicHandleInfo.hpp:20
Definition: BrokerBase.hpp:42
Definition: CommonCore.hpp:75
FederateState * getHandleFederate(InterfaceHandle handle)
Definition: CommonCore.cpp:303
virtual const std::string & getFederateTag(LocalFederateId fid, std::string_view tag) const override final
Definition: CommonCore.cpp:5581
virtual void setIntegerProperty(LocalFederateId federateID, int32_t property, int16_t propertyValue) override final
Definition: CommonCore.cpp:1012
virtual void setFlagOption(LocalFederateId federateID, int32_t flag, bool flagValue=true) override final
Definition: CommonCore.cpp:1085
virtual bool waitForDisconnect(std::chrono::milliseconds msToWait=std::chrono::milliseconds(0)) const override final
Definition: CommonCore.cpp:255
virtual int32_t getFederationSize() override final
Definition: CommonCore.cpp:856
virtual const std::string & getExtractionType(InterfaceHandle handle) const override final
Definition: CommonCore.cpp:1386
virtual int32_t getHandleOption(InterfaceHandle handle, int32_t option) const override final
Definition: CommonCore.cpp:1433
virtual uint64_t receiveCount(InterfaceHandle destination) override final
Definition: CommonCore.cpp:2368
virtual void removeRoute(route_id rid)=0
virtual void transmit(route_id rid, ActionMessage &&command)=0
virtual void processPriorityCommand(ActionMessage &&command) override final
Definition: CommonCore.cpp:3167
virtual InterfaceHandle registerDataSink(LocalFederateId federateID, std::string_view name) override final
Definition: CommonCore.cpp:1857
virtual std::string getErrorMessage() const override final
Definition: CommonCore.cpp:464
virtual const std::string & getInjectionType(InterfaceHandle handle) const override final
Definition: CommonCore.cpp:1362
virtual void sendAt(InterfaceHandle sourceHandle, const void *data, uint64_t length, Time time) override final
Definition: CommonCore.cpp:2222
void unregister()
Definition: CommonCore.cpp:264
virtual void sendCommand(std::string_view target, std::string_view commandStr, std::string_view source, HelicsSequencingModes mode) override
Definition: CommonCore.cpp:3139
virtual InterfaceHandle getPublication(LocalFederateId federateID, std::string_view key) const override final
Definition: CommonCore.cpp:1306
virtual void setValue(InterfaceHandle handle, const char *data, uint64_t len) override final
Definition: CommonCore.cpp:1725
virtual InterfaceHandle registerTargetedEndpoint(LocalFederateId federateID, std::string_view name, std::string_view type) override final
Definition: CommonCore.cpp:1879
const BasicHandleInfo * getHandleInfo(InterfaceHandle handle) const
Definition: CommonCore.cpp:336
FederateState * getFederateAt(LocalFederateId federateID) const
Definition: CommonCore.cpp:291
virtual void setFilterOperator(InterfaceHandle filter, std::shared_ptr< FilterOperator > callback) override final
Definition: CommonCore.cpp:2520
bool allDisconnected() const
Definition: CommonCore.cpp:523
virtual void sendMessage(InterfaceHandle sourceHandle, std::unique_ptr< Message > message) override final
Definition: CommonCore.cpp:2248
virtual void setGlobal(std::string_view valueName, std::string_view value) override
Definition: CommonCore.cpp:3129
virtual Time getCurrentTime(LocalFederateId federateID) const override final
Definition: CommonCore.cpp:1003
virtual const std::string & getFederateName(LocalFederateId federateID) const override final
Definition: CommonCore.cpp:819
virtual void closeHandle(InterfaceHandle handle) override final
Definition: CommonCore.cpp:1458
virtual void dataLink(std::string_view source, std::string_view target) override final
Definition: CommonCore.cpp:2043
virtual std::pair< std::string, std::string > getCommand(LocalFederateId federateID) override
Definition: CommonCore.cpp:2455
virtual InterfaceHandle getTranslator(std::string_view name) const override final
Definition: CommonCore.cpp:2008
virtual InterfaceHandle registerTranslator(std::string_view translatorName, std::string_view endpointType, std::string_view units) override final
Definition: CommonCore.cpp:1974
virtual Time timeRequest(LocalFederateId federateID, Time next) override final
Definition: CommonCore.cpp:865
virtual InterfaceHandle registerCloningFilter(std::string_view filterName, std::string_view type_in, std::string_view type_out) override final
Definition: CommonCore.cpp:1945
virtual int getErrorCode() const override final
Definition: CommonCore.cpp:459
virtual iteration_time requestTimeIterative(LocalFederateId federateID, Time next, IterationRequest iterate) override final
Definition: CommonCore.cpp:923
virtual InterfaceHandle getFilter(std::string_view name) const override final
Definition: CommonCore.cpp:1998
virtual const std::string & getSourceTargets(InterfaceHandle handle) const override final
Definition: CommonCore.cpp:1691
virtual void processDisconnect(bool skipUnregister=false) override final
Definition: CommonCore.cpp:200
virtual void setQueryCallback(LocalFederateId federateID, std::function< std::string(std::string_view)> queryFunction, int order) override
Definition: CommonCore.cpp:2611
virtual void addSourceTarget(InterfaceHandle handle, std::string_view name, InterfaceType hint) override final
Definition: CommonCore.cpp:1588
virtual bool connect() override final
Definition: CommonCore.cpp:130
virtual void setTranslatorOperator(InterfaceHandle translator, std::shared_ptr< TranslatorOperator > callbacks) override final
Definition: CommonCore.cpp:2542
virtual void setFederateOperator(LocalFederateId federateID, std::shared_ptr< FederateOperator > callback) override
Definition: CommonCore.cpp:2567
virtual std::unique_ptr< Message > receiveAny(LocalFederateId federateID, InterfaceHandle &endpoint_id) override final
Definition: CommonCore.cpp:2390
virtual InterfaceHandle registerFilter(std::string_view filterName, std::string_view type_in, std::string_view type_out) override final
Definition: CommonCore.cpp:1923
virtual InterfaceHandle getDataSink(LocalFederateId federateID, std::string_view name) const override final
Definition: CommonCore.cpp:1913
CommonCore() noexcept
Definition: CommonCore.cpp:73
virtual const std::string & getInjectionUnits(InterfaceHandle handle) const override final
Definition: CommonCore.cpp:1325
virtual InterfaceHandle registerEndpoint(LocalFederateId federateID, std::string_view name, std::string_view type) override final
Definition: CommonCore.cpp:1830
virtual iteration_time enterExecutingMode(LocalFederateId federateID, IterationRequest iterate=NO_ITERATION) override final
Definition: CommonCore.cpp:647
virtual bool isConnected() const override final
Definition: CommonCore.cpp:180
virtual const std::shared_ptr< const SmallBuffer > & getValue(InterfaceHandle handle, uint32_t *inputIndex) override final
Definition: CommonCore.cpp:1789
virtual Time getTimeProperty(LocalFederateId federateID, int32_t property) const override final
Definition: CommonCore.cpp:1054
virtual void setInterfaceTag(InterfaceHandle handle, std::string_view tag, std::string_view value) override final
Definition: CommonCore.cpp:5553
virtual void configureFromArgs(int argc, char *argv[]) override final
Definition: CommonCore.cpp:98
virtual void configureFromVector(std::vector< std::string > args) override final
Definition: CommonCore.cpp:114
virtual InterfaceHandle registerInput(LocalFederateId federateID, std::string_view key, std::string_view type, std::string_view units) override final
Definition: CommonCore.cpp:1236
virtual ~CommonCore() override
Definition: CommonCore.cpp:286
virtual double getSimulationTime() const override
Definition: CommonCore.cpp:544
bool allInitReady() const
Definition: CommonCore.cpp:507
virtual void sendTo(InterfaceHandle sourceHandle, const void *data, uint64_t length, std::string_view destination) override final
Definition: CommonCore.cpp:2080
virtual void setLoggingLevel(int logLevel) override
Definition: CommonCore.cpp:2437
virtual void setLogFile(std::string_view lfile) override final
Definition: CommonCore.cpp:2446
virtual void addSourceFilterToEndpoint(std::string_view filter, std::string_view endpoint) override final
Definition: CommonCore.cpp:2051
virtual bool enterInitializingMode(LocalFederateId federateID, IterationRequest request) override final
Definition: CommonCore.cpp:579
virtual void processCommand(ActionMessage &&command) override final
Definition: CommonCore.cpp:3433
virtual void removeTarget(InterfaceHandle handle, std::string_view targetToRemove) override final
Definition: CommonCore.cpp:1475
virtual std::string query(std::string_view target, std::string_view queryStr, HelicsSequencingModes mode) override
Definition: CommonCore.cpp:3038
virtual const std::string & getInterfaceTag(InterfaceHandle handle, std::string_view tag) const override final
Definition: CommonCore.cpp:5544
virtual std::pair< std::string, std::string > waitCommand(LocalFederateId federateID) override
Definition: CommonCore.cpp:2464
virtual void addDestinationTarget(InterfaceHandle handle, std::string_view dest, InterfaceType hint) override final
Definition: CommonCore.cpp:1509
virtual InterfaceHandle getInput(LocalFederateId federateID, std::string_view key) const override final
Definition: CommonCore.cpp:1267
virtual uint64_t receiveCountAny(LocalFederateId federateID) override final
Definition: CommonCore.cpp:2404
virtual InterfaceHandle getEndpoint(LocalFederateId federateID, std::string_view name) const override final
Definition: CommonCore.cpp:1903
virtual const std::vector< InterfaceHandle > & getValueUpdates(LocalFederateId federateID) override final
Definition: CommonCore.cpp:1821
virtual int16_t getIntegerProperty(LocalFederateId federateID, int32_t property) const override final
Definition: CommonCore.cpp:1063
virtual void send(InterfaceHandle sourceHandle, const void *data, uint64_t length) override final
Definition: CommonCore.cpp:2197
virtual void transmit(route_id rid, const ActionMessage &command)=0
virtual void makeConnections(const std::string &file) override final
Definition: CommonCore.cpp:2018
virtual bool getFlagOption(LocalFederateId federateID, int32_t flag) const override final
Definition: CommonCore.cpp:1133
OperatingState minFederateState() const
Definition: CommonCore.cpp:533
virtual LocalFederateId getFederateId(std::string_view name) const override final
Definition: CommonCore.cpp:845
virtual void setInterfaceInfo(InterfaceHandle handle, std::string_view info) override final
Definition: CommonCore.cpp:5538
virtual void finalize(LocalFederateId federateID) override final
Definition: CommonCore.cpp:471
virtual const std::string & getHandleName(InterfaceHandle handle) const override final
Definition: CommonCore.cpp:1316
virtual void addDestinationFilterToEndpoint(std::string_view filter, std::string_view endpoint) override final
Definition: CommonCore.cpp:2059
virtual void addDependency(LocalFederateId federateID, std::string_view federateName) override final
Definition: CommonCore.cpp:2068
virtual void processCommunications(LocalFederateId federateID, std::chrono::milliseconds msToWait) override final
Definition: CommonCore.cpp:983
virtual void logMessage(LocalFederateId federateID, int logLevel, std::string_view messageToLog) override final
Definition: CommonCore.cpp:2417
virtual const std::vector< std::shared_ptr< const SmallBuffer > > & getAllValues(InterfaceHandle handle) override final
Definition: CommonCore.cpp:1806
virtual std::unique_ptr< Message > receive(InterfaceHandle destination) override final
Definition: CommonCore.cpp:2377
virtual const std::string & getAddress() const override final
Definition: CommonCore.cpp:192
const BasicHandleInfo * getLocalEndpoint(std::string_view name) const
Definition: CommonCore.cpp:341
virtual void setHandleOption(InterfaceHandle handle, int32_t option, int32_t option_value) override final
Definition: CommonCore.cpp:1404
virtual bool isOpenToNewFederates() const override final
Definition: CommonCore.cpp:363
virtual void linkEndpoints(std::string_view source, std::string_view dest) override final
Definition: CommonCore.cpp:2027
virtual void disconnect() override final
Definition: CommonCore.cpp:229
void checkInFlightQueriesForDisconnect()
Definition: CommonCore.cpp:5305
virtual InterfaceHandle registerPublication(LocalFederateId federateID, std::string_view key, std::string_view type, std::string_view units) override final
Definition: CommonCore.cpp:1277
virtual const std::string & getInterfaceInfo(InterfaceHandle handle) const override final
Definition: CommonCore.cpp:5529
virtual void configure(std::string_view configureString) override final
Definition: CommonCore.cpp:82
virtual void setFederateTag(LocalFederateId fid, std::string_view tag, std::string_view value) override final
Definition: CommonCore.cpp:5600
virtual void setCoreReadyToInit() override final
Definition: CommonCore.cpp:549
virtual const std::string & getExtractionUnits(InterfaceHandle handle) const override final
Definition: CommonCore.cpp:1347
FederateState * getFederate(std::string_view federateName) const
Definition: CommonCore.cpp:297
virtual void sendToAt(InterfaceHandle sourceHandle, const void *data, uint64_t length, std::string_view destination, Time time) override final
Definition: CommonCore.cpp:2120
void setIdentifier(std::string_view name)
Definition: CommonCore.cpp:2590
virtual void setTimeProperty(LocalFederateId federateID, int32_t property, Time time) override final
Definition: CommonCore.cpp:1038
virtual LocalFederateId registerFederate(std::string_view name, const CoreFederateInfo &info) override final
Definition: CommonCore.cpp:694
virtual void setLoggingCallback(LocalFederateId federateID, std::function< void(int, std::string_view, std::string_view)> logFunction) override final
Definition: CommonCore.cpp:2473
virtual const std::string & getDestinationTargets(InterfaceHandle handle) const override final
Definition: CommonCore.cpp:1660
virtual const std::string & getIdentifier() const override final
Definition: CommonCore.cpp:187
virtual void addAlias(std::string_view interfaceKey, std::string_view alias) override final
Definition: CommonCore.cpp:2035
virtual void addRoute(route_id rid, int interfaceId, std::string_view routeInfo)=0
virtual bool isConfigured() const override final
Definition: CommonCore.cpp:358
Definition: CoreFederateInfo.hpp:16
Definition: core/Core.hpp:41
Definition: CommonCore.hpp:59
Definition: FederateState.hpp:50
Definition: GlobalFederateId.hpp:75
Definition: LocalFederateId.hpp:65
Definition: LocalFederateId.hpp:22
Definition: GlobalFederateId.hpp:187
HelicsSequencingModes
Definition: helics_enums.h:425
action_t
Definition: ActionMessageDefintions.hpp:20
the main namespace for the helics co-simulation library User functions will be in the helics namespac...
Definition: AsyncFedCallInfo.hpp:14
const std::string & stateString(OperatingState state)
Definition: CommonCore.cpp:56
IterationRequest
Definition: CoreTypes.hpp:102
InterfaceType
Definition: CoreTypes.hpp:111
QueryReuse
Enumeration of if query result is reusable.
Definition: queryHelpers.hpp:39
TimeRepresentation< count_time< 9 > > Time
Definition: helicsTime.hpp:27
OperatingState
Definition: CommonCore.hpp:53
Definition: helicsTime.hpp:43