helics  3.0.1
application_api/Federate.hpp
1 /*
2 Copyright (c) 2017-2021,
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 #include "../core/LocalFederateId.hpp"
9 #include "../core/helicsTime.hpp"
10 #include "../helics_enums.h"
11 #include "FederateInfo.hpp"
12 #include "helics/helics-config.h"
13 #include "helicsTypes.hpp"
14 #include "helics_cxx_export.h"
15 
16 #include <atomic>
17 #include <functional>
18 #include <memory>
19 #include <mutex>
20 #include <optional>
21 #include <stdexcept>
22 #include <string>
23 #include <utility>
24 
25 namespace gmlc {
26 namespace libguarded {
27  template<class T, class M>
29 } // namespace libguarded
30 } // namespace gmlc
31 
35 namespace helics {
36 class Core;
37 class CoreApp;
38 class AsyncFedCallInfo;
39 class MessageOperator;
40 class FilterFederateManager;
41 class Filter;
42 class CloningFilter;
43 class Federate;
44 
47 class HELICS_CXX_EXPORT Federate {
48  public:
50  enum class Modes : char {
52  STARTUP = 0,
54  INITIALIZING = 1,
56  EXECUTING = 2,
58  FINALIZE = 3,
60  ERROR_STATE = 4,
61  // the following states are for asynchronous operations
63  PENDING_INIT = 5,
65  PENDING_EXEC = 6,
67  PENDING_TIME = 7,
69  PENDING_ITERATIVE_TIME = 8,
71  PENDING_FINALIZE = 9,
73  FINISHED = 10
74  };
75 
76  protected:
77  std::atomic<Modes> currentMode{Modes::STARTUP};
78  char nameSegmentSeparator = '/';
79 
80  bool strictConfigChecking{true};
82  bool useJsonSerialization{false};
84  bool observerMode{false};
85 
86  private:
87  LocalFederateId fedID;
88  protected:
89  std::shared_ptr<Core> coreObject;
90  Time currentTime = Time::minVal();
91  private:
92  std::unique_ptr<gmlc::libguarded::shared_guarded<AsyncFedCallInfo, std::mutex>>
93  asyncCallInfo;
94  std::unique_ptr<FilterFederateManager> fManager;
95  std::string mName;
96 
97  public:
102  Federate(const std::string& fedname, const FederateInfo& fi);
108  Federate(const std::string& fedname,
109  const std::shared_ptr<Core>& core,
110  const FederateInfo& fi = FederateInfo{});
111 
117  Federate(const std::string& fedname, CoreApp& core, const FederateInfo& fi = FederateInfo{});
121  explicit Federate(const std::string& configString);
127  Federate(const std::string& fedname, const std::string& configString);
129  Federate() noexcept;
131  Federate(Federate&& fed) noexcept;
133  Federate(const Federate& fed) = delete;
135  virtual ~Federate();
137  Federate& operator=(Federate&& fed) noexcept;
139  Federate& operator=(const Federate& fed) = delete;
143  void enterInitializingMode();
144 
149  void enterInitializingModeAsync();
154  bool isAsyncOperationCompleted() const;
158  void enterInitializingModeComplete();
163  IterationResult enterExecutingMode(IterationRequest iterate = IterationRequest::NO_ITERATIONS);
169  void enterExecutingModeAsync(IterationRequest iterate = IterationRequest::NO_ITERATIONS);
174  IterationResult enterExecutingModeComplete();
178  void finalize();
181  void finalizeAsync();
183  void finalizeComplete();
184 
187  virtual void disconnect();
188 
193  void localError(int errorcode, const std::string& message);
194 
200  void globalError(int errorcode, const std::string& message);
201 
205  void localError(int errorcode);
206 
210  void globalError(int errorcode);
211 
219  void setSeparator(char separator) { nameSegmentSeparator = separator; }
223  Time requestTime(Time nextInternalTimeStep);
224 
227  Time requestNextStep() { return requestTime(timeZero); }
228 
232  Time requestTimeAdvance(Time timeDelta) { return requestTime(currentTime + timeDelta); }
233 
238  iteration_time requestTimeIterative(Time nextInternalTimeStep, IterationRequest iterate);
239 
244  void requestTimeAsync(Time nextInternalTimeStep);
245 
252  void requestTimeIterativeAsync(Time nextInternalTimeStep, IterationRequest iterate);
253 
256  Time requestTimeComplete();
257 
261  iteration_time requestTimeIterativeComplete();
262 
268  void setTag(const std::string& tag, const std::string& value);
275  const std::string& getTag(const std::string& tag) const;
276 
281  void setProperty(int32_t option, double timeValue);
282 
287  void setProperty(int32_t option, Time timeValue);
288 
293  virtual void setFlagOption(int flag, bool flagValue = true);
298  void setProperty(int32_t option, int32_t optionValue);
299 
303  Time getTimeProperty(int32_t option) const;
304 
308  virtual bool getFlagOption(int flag) const;
312  int getIntegerProperty(int32_t option) const;
313 
320  void setLoggingCallback(
321  const std::function<void(int, std::string_view, std::string_view)>& logFunction);
322 
336  std::string query(const std::string& target,
337  const std::string& queryStr,
339 
352  std::string query(const std::string& queryStr,
354 
366  QueryId queryAsync(const std::string& target,
367  const std::string& queryStr,
369 
379  QueryId queryAsync(const std::string& queryStr,
381 
391  std::string queryComplete(QueryId queryIndex);
392 
396  bool isQueryCompleted(QueryId queryIndex) const;
397 
406  void setQueryCallback(const std::function<std::string(std::string_view)>& queryFunction);
407 
413  void setGlobal(const std::string& valueName, const std::string& value);
414 
423  void sendCommand(
424  const std::string& target,
425  const std::string& commandStr,
427 
432  std::pair<std::string, std::string> getCommand();
433 
438  std::pair<std::string, std::string> waitCommand();
439 
444  void addDependency(const std::string& fedName);
445 
451  Filter& registerGlobalFilter(const std::string& filterName,
452  const std::string& inputType = std::string(),
453  const std::string& outputType = std::string());
454 
461  CloningFilter& registerGlobalCloningFilter(const std::string& filterName,
462  const std::string& inputType = std::string(),
463  const std::string& outputType = std::string());
464 
471  Filter& registerFilter(const std::string& filterName,
472  const std::string& inputType = std::string(),
473  const std::string& outputType = std::string());
474 
483  CloningFilter& registerCloningFilter(const std::string& filterName,
484  const std::string& inputType = std::string(),
485  const std::string& outputType = std::string());
486 
490  {
491  return registerGlobalFilter(std::string(), std::string(), std::string());
492  }
493 
497  {
498  return registerGlobalCloningFilter(std::string(), std::string(), std::string());
499  }
500 
504  const Filter& getFilter(const std::string& filterName) const;
505 
509  const Filter& getFilter(int index) const;
510 
514  Filter& getFilter(const std::string& filterName);
515 
519  Filter& getFilter(int index);
520 
528  void setFilterOperator(const Filter& filt, std::shared_ptr<FilterOperator> op);
529 
531  int getFilterCount() const;
532 
533  protected:
535  virtual void updateTime(Time newTime, Time oldTime);
538  virtual void startupToInitializeStateTransition();
541  virtual void initializeToExecuteStateTransition(IterationResult iterate);
543  virtual void disconnectTransition();
546  virtual std::string localQuery(const std::string& queryStr) const;
547 
548  public:
554  virtual void registerInterfaces(const std::string& configString);
560  void registerFilterInterfaces(const std::string& configString);
561 
563  auto getID() const noexcept { return fedID; }
565  Modes getCurrentMode() const { return currentMode.load(); }
568  Time getCurrentTime() const { return currentTime; }
570  const std::string& getName() const { return mName; }
572  const std::shared_ptr<Core>& getCorePointer() { return coreObject; }
573  // interface for filter objects
575  int filterCount() const;
580  void logMessage(int level, const std::string& message) const;
581 
585  void logErrorMessage(const std::string& message) const
586  {
587  logMessage(HELICS_LOG_LEVEL_ERROR, message);
588  }
592  void logWarningMessage(const std::string& message) const
593  {
594  logMessage(HELICS_LOG_LEVEL_WARNING, message);
595  }
599  void logInfoMessage(const std::string& message) const
600  {
601  logMessage(HELICS_LOG_LEVEL_SUMMARY, message);
602  }
606  void logDebugMessage(const std::string& message) const
607  {
608  logMessage(HELICS_LOG_LEVEL_DEBUG, message);
609  }
611  void completeOperation();
612 
613  private:
618  void registerFilterInterfacesJson(const std::string& jsonString);
623  void registerFilterInterfacesToml(const std::string& tomlString);
624 };
625 
627 class HELICS_CXX_EXPORT Interface {
628  protected:
629  Core* cr{nullptr};
630  InterfaceHandle handle{};
631  std::string mName;
632  public:
633  Interface() = default;
634  Interface(Federate* federate, InterfaceHandle id, std::string_view actName);
635  Interface(Core* core, InterfaceHandle id, std::string_view actName):
636  cr(core), handle(id), mName(actName)
637  {
638  }
639  virtual ~Interface() = default;
642  InterfaceHandle getHandle() const { return handle; }
644  operator InterfaceHandle() const { return handle; }
646  bool isValid() const { return handle.isValid(); }
647  bool operator<(const Interface& inp) const { return (handle < inp.handle); }
648  bool operator>(const Interface& inp) const { return (handle > inp.handle); }
649  bool operator==(const Interface& inp) const { return (handle == inp.handle); }
650  bool operator!=(const Interface& inp) const { return (handle != inp.handle); }
653  const std::string& getLocalName() const { return mName; }
656  const std::string& getName() const;
658  const std::string& getTarget() const;
660  void addSourceTarget(std::string_view newTarget);
662  void addDestinationTarget(std::string_view newTarget);
664  void removeTarget(std::string_view targetToRemove);
665 
667  const std::string& getInfo() const;
669  void setInfo(const std::string& info);
675  void setTag(const std::string& tag, const std::string& value);
682  const std::string& getTag(const std::string& tag) const;
684  virtual void setOption(int32_t option, int32_t value = 1);
685 
687  virtual int32_t getOption(int32_t option) const;
688 
694  const std::string& getInjectionType() const;
695 
701  const std::string& getExtractionType() const;
702 
708  const std::string& getInjectionUnits() const;
709 
714  const std::string& getExtractionUnits() const;
717  virtual const std::string& getDisplayName() const = 0;
720  const std::string& getSourceTargets() const;
723  const std::string& getDestinationTargets() const;
725  void close();
727  void disconnectFromCore();
728 };
729 
733 HELICS_CXX_EXPORT void cleanupHelicsLibrary();
734 } // namespace helics
helics::Interface::cr
Core * cr
pointer to the core object
Definition: application_api/Federate.hpp:629
helics::timeZero
constexpr Time timeZero
Definition: helicsTime.hpp:31
helics::Federate::completeOperation
void completeOperation()
Definition: Federate.cpp:606
helics::Interface::getDisplayName
virtual const std::string & getDisplayName() const =0
Definition: Federate.cpp:1470
helics::Federate::getFilter
const Filter & getFilter(const std::string &filterName) const
Definition: Federate.cpp:1305
helicsTypes.hpp
helics::Federate::Modes
Modes
Definition: application_api/Federate.hpp:50
helics::CloningFilter
Definition: Filters.hpp:99
helics::initializationTime
constexpr Time initializationTime
Definition: helicsTime.hpp:38
helics::IterationResult::HALTED
@ HALTED
indicator that the simulation has been halted
helics::Federate::registerFilter
Filter & registerFilter(const std::string &filterName, const std::string &inputType=std::string(), const std::string &outputType=std::string())
Definition: Federate.cpp:1269
helics::Interface::setInfo
void setInfo(const std::string &info)
Definition: Federate.cpp:1400
helics::Interface::addSourceTarget
void addSourceTarget(std::string_view newTarget)
Definition: Federate.cpp:1365
helics::IdentifierId< IdentifierType, Identifiers::QUERY, invalid_id_value >
helics::Federate::isQueryCompleted
bool isQueryCompleted(QueryId queryIndex) const
Definition: Federate.cpp:1232
helics::Federate::getName
const std::string & getName() const
Definition: application_api/Federate.hpp:570
helics::Federate::getFilterCount
int getFilterCount() const
Definition: Federate.cpp:1323
helics::Interface::getTag
const std::string & getTag(const std::string &tag) const
Definition: Federate.cpp:1410
helics::loadFederateInfo
FederateInfo loadFederateInfo(const std::string &configString)
Definition: FederateInfo.cpp:675
helics::Interface::getLocalName
const std::string & getLocalName() const
Definition: application_api/Federate.hpp:653
helics::Interface::disconnectFromCore
void disconnectFromCore()
Definition: Federate.cpp:1483
helics::IdentifierId::value
BaseType value() const noexcept
Definition: helicsTypes.hpp:74
helics::Core::closeHandle
virtual void closeHandle(InterfaceHandle handle)=0
helics::Federate::registerFilterInterfaces
void registerFilterInterfaces(const std::string &configString)
Definition: Federate.cpp:818
helics::Federate::startupToInitializeStateTransition
virtual void startupToInitializeStateTransition()
Definition: Federate.cpp:797
helics::Core::getHandleOption
virtual int32_t getHandleOption(InterfaceHandle handle, int32_t option) const =0
helics::Interface::addDestinationTarget
void addDestinationTarget(std::string_view newTarget)
Definition: Federate.cpp:1375
helics::Federate::setProperty
void setProperty(int32_t option, double timeValue)
Definition: Federate.cpp:462
helics::Federate::Modes::FINALIZE
@ FINALIZE
helics::Core::getSourceTargets
virtual const std::string & getSourceTargets(InterfaceHandle handle) const =0
helics::FederateInfo::forceNewCore
bool forceNewCore
indicator that the federate should not use an existing core
Definition: FederateInfo.hpp:33
helics::CoreFactory::findJoinableCoreOfType
std::shared_ptr< Core > findJoinableCoreOfType(CoreType type)
Definition: CoreFactory.cpp:280
helics::Federate::finalizeAsync
void finalizeAsync()
Definition: Federate.cpp:558
helics::IterationResult::ERROR_RESULT
@ ERROR_RESULT
indicator that an error has occurred
HELICS_LOG_LEVEL_WARNING
@ HELICS_LOG_LEVEL_WARNING
Definition: helics_enums.h:185
helics::Federate::getCurrentMode
Modes getCurrentMode() const
Definition: application_api/Federate.hpp:565
helics::Federate::enterInitializingModeComplete
void enterInitializingModeComplete()
Definition: Federate.cpp:288
helics::InterfaceHandle
Definition: LocalFederateId.hpp:65
helics::Federate::getCommand
std::pair< std::string, std::string > getCommand()
Definition: Federate.cpp:1254
helics::Federate::currentMode
std::atomic< Modes > currentMode
the current state of the simulation
Definition: application_api/Federate.hpp:77
helics::BrokerFactory::cleanUpBrokers
size_t cleanUpBrokers()
Definition: BrokerFactory.cpp:269
helics::Federate::setLoggingCallback
void setLoggingCallback(const std::function< void(int, std::string_view, std::string_view)> &logFunction)
Definition: Federate.cpp:487
helics::Federate::enterInitializingModeAsync
void enterInitializingModeAsync()
Definition: Federate.cpp:248
HELICS_FLAG_STRICT_CONFIG_CHECKING
@ HELICS_FLAG_STRICT_CONFIG_CHECKING
Definition: helics_enums.h:132
helics::Federate::getFlagOption
virtual bool getFlagOption(int flag) const
Definition: Federate.cpp:501
helics::Time
TimeRepresentation< count_time< 9 > > Time
Definition: helicsTime.hpp:27
helics::filterTypeFromString
FilterTypes filterTypeFromString(const std::string &filterType) noexcept
Definition: Filters.cpp:32
helics::Federate::registerInterfaces
virtual void registerInterfaces(const std::string &configString)
Definition: Federate.cpp:813
helics::Core::addSourceTarget
virtual void addSourceTarget(InterfaceHandle handle, std::string_view name, InterfaceType hint=InterfaceType::UNKNOWN)=0
helics::Federate::globalError
void globalError(int errorcode, const std::string &message)
Definition: Federate.cpp:648
helics::Interface::getInjectionType
const std::string & getInjectionType() const
Definition: Federate.cpp:1440
helics::Federate::queryAsync
QueryId queryAsync(const std::string &target, const std::string &queryStr, HelicsSequencingModes mode=HELICS_SEQUENCING_MODE_FAST)
Definition: Federate.cpp:1191
helics::Federate::Modes::PENDING_EXEC
@ PENDING_EXEC
helics::Filter
Definition: Filters.hpp:39
helics::Federate::currentTime
Time currentTime
the current simulation time
Definition: application_api/Federate.hpp:90
helics::Federate::requestTimeIterative
iteration_time requestTimeIterative(Time nextInternalTimeStep, IterationRequest iterate)
Definition: Federate.cpp:684
helics::Federate::Modes::PENDING_TIME
@ PENDING_TIME
helics::Federate::nameSegmentSeparator
char nameSegmentSeparator
the separator between automatically prependend names
Definition: application_api/Federate.hpp:78
helics::Federate::enterExecutingMode
IterationResult enterExecutingMode(IterationRequest iterate=IterationRequest::NO_ITERATIONS)
Definition: Federate.cpp:316
HELICS_FLAG_OBSERVER
@ HELICS_FLAG_OBSERVER
Definition: helics_enums.h:99
helics::getOptionIndex
int getOptionIndex(std::string val)
Definition: FederateInfo.cpp:385
helics::Federate::setFlagOption
virtual void setFlagOption(int flag, bool flagValue=true)
Definition: Federate.cpp:493
helics::Federate::disconnectTransition
virtual void disconnectTransition()
Definition: Federate.cpp:806
helics::Federate::registerFilter
Filter & registerFilter()
Definition: application_api/Federate.hpp:489
helics::FederateInfo::coreType
CoreType coreType
the type of the core
Definition: FederateInfo.hpp:30
helics::Core::setInterfaceTag
virtual void setInterfaceTag(InterfaceHandle handle, const std::string &tag, const std::string &value)=0
helics::Federate::updateTime
virtual void updateTime(Time newTime, Time oldTime)
Definition: Federate.cpp:792
helics::Core::getInterfaceTag
virtual const std::string & getInterfaceTag(InterfaceHandle handle, const std::string &tag) const =0
helics::getOptionValue
int getOptionValue(std::string val)
Definition: FederateInfo.cpp:404
helics::CoreFactory::FindOrCreate
std::shared_ptr< Core > FindOrCreate(CoreType type, const std::string &coreName, std::vector< std::string > args)
Definition: CoreFactory.cpp:189
HELICS_LOG_LEVEL_DEBUG
@ HELICS_LOG_LEVEL_DEBUG
Definition: helics_enums.h:198
helics::InvalidFunctionCall
Definition: core-exceptions.hpp:66
helics::Federate::getTimeProperty
Time getTimeProperty(int32_t option) const
Definition: Federate.cpp:477
helics::InvalidParameter
Definition: core-exceptions.hpp:47
helics::Interface::getTarget
const std::string & getTarget() const
Definition: Federate.cpp:1360
helics::Interface::getInjectionUnits
const std::string & getInjectionUnits() const
Definition: Federate.cpp:1450
helics::Interface
Definition: application_api/Federate.hpp:627
helics::Core
Definition: core/Core.hpp:42
helics::RegistrationFailure
Definition: core-exceptions.hpp:84
helics::Interface::getOption
virtual int32_t getOption(int32_t option) const
Definition: Federate.cpp:1435
helics::CoreApp
Definition: application_api/CoreApp.hpp:25
helics::Federate::enterExecutingModeAsync
void enterExecutingModeAsync(IterationRequest iterate=IterationRequest::NO_ITERATIONS)
Definition: Federate.cpp:371
helics::fileops::isMember
bool isMember(const toml::value &element, const std::string &key)
Definition: TomlProcessingFunctions.hpp:152
helics::Interface::removeTarget
void removeTarget(std::string_view targetToRemove)
Definition: Federate.cpp:1385
helics::Federate::logMessage
void logMessage(int level, const std::string &message) const
Definition: Federate.cpp:1333
helics::Core::getDestinationTargets
virtual const std::string & getDestinationTargets(InterfaceHandle handle) const =0
helics::Core::getExtractionType
virtual const std::string & getExtractionType(InterfaceHandle handle) const =0
helics::Interface::isValid
bool isValid() const
Definition: application_api/Federate.hpp:646
helics::FederateInfo
Definition: FederateInfo.hpp:20
helics::Interface::handle
InterfaceHandle handle
the id as generated by the Federate
Definition: application_api/Federate.hpp:630
helics::IterationRequest
IterationRequest
Definition: CoreTypes.hpp:89
helics::Core::setInterfaceInfo
virtual void setInterfaceInfo(InterfaceHandle handle, std::string info)=0
helics::Federate::localQuery
virtual std::string localQuery(const std::string &queryStr) const
Definition: Federate.cpp:1156
helics::Federate::isAsyncOperationCompleted
bool isAsyncOperationCompleted() const
Definition: Federate.cpp:266
helics::Federate::operator=
Federate & operator=(Federate &&fed) noexcept
Definition: Federate.cpp:190
helics::Federate::useJsonSerialization
bool useJsonSerialization
Definition: application_api/Federate.hpp:82
helics::Federate::getTag
const std::string & getTag(const std::string &tag) const
Definition: Federate.cpp:457
helics::Federate::Modes::ERROR_STATE
@ ERROR_STATE
helics::FederateInfo::useJsonSerialization
bool useJsonSerialization
Definition: FederateInfo.hpp:35
helics::Federate::getID
auto getID() const noexcept
Definition: application_api/Federate.hpp:563
helics::Federate::Modes::INITIALIZING
@ INITIALIZING
helics::Federate::enterExecutingModeComplete
IterationResult enterExecutingModeComplete()
Definition: Federate.cpp:408
helics::Interface::getName
const std::string & getName() const
Definition: Federate.cpp:1355
helics::Federate::getCurrentTime
Time getCurrentTime() const
Definition: application_api/Federate.hpp:568
helics::Core::getInjectionType
virtual const std::string & getInjectionType(InterfaceHandle handle) const =0
helics::Federate::~Federate
virtual ~Federate()
Definition: Federate.cpp:208
helics::Interface::getExtractionType
const std::string & getExtractionType() const
Definition: Federate.cpp:1445
helics::Interface::getSourceTargets
const std::string & getSourceTargets() const
Definition: Federate.cpp:1460
helics::IterationResult
IterationResult
Definition: CoreTypes.hpp:80
helics::Interface::getExtractionUnits
const std::string & getExtractionUnits() const
Definition: Federate.cpp:1455
helics::Core::getInjectionUnits
virtual const std::string & getInjectionUnits(InterfaceHandle handle) const =0
helics::Federate::registerGlobalCloningFilter
CloningFilter & registerGlobalCloningFilter(const std::string &filterName, const std::string &inputType=std::string(), const std::string &outputType=std::string())
Definition: Federate.cpp:1298
HelicsSequencingModes
HelicsSequencingModes
Definition: helics_enums.h:363
helics::Federate::Modes::PENDING_FINALIZE
@ PENDING_FINALIZE
helics::cleanupHelicsLibrary
void cleanupHelicsLibrary()
Definition: Federate.cpp:37
helics::Core::getInterfaceInfo
virtual const std::string & getInterfaceInfo(InterfaceHandle handle) const =0
helics::Federate::enterInitializingMode
void enterInitializingMode()
Definition: Federate.cpp:222
helics::Federate::registerCloningFilter
CloningFilter & registerCloningFilter()
Definition: application_api/Federate.hpp:496
helics::Federate::sendCommand
void sendCommand(const std::string &target, const std::string &commandStr, HelicsSequencingModes mode=HelicsSequencingModes::HELICS_SEQUENCING_MODE_FAST)
Definition: Federate.cpp:1247
helics::Federate::logInfoMessage
void logInfoMessage(const std::string &message) const
Definition: application_api/Federate.hpp:599
helics::Core::addDestinationTarget
virtual void addDestinationTarget(InterfaceHandle handle, std::string_view dest, InterfaceType hint=InterfaceType::UNKNOWN)=0
HELICS_FLAG_USE_JSON_SERIALIZATION
@ HELICS_FLAG_USE_JSON_SERIALIZATION
Definition: helics_enums.h:134
helics::Federate::initializeToExecuteStateTransition
virtual void initializeToExecuteStateTransition(IterationResult iterate)
Definition: Federate.cpp:801
helics::Federate::localError
void localError(int errorcode, const std::string &message)
Definition: Federate.cpp:641
helics::Federate::query
std::string query(const std::string &target, const std::string &queryStr, HelicsSequencingModes mode=HELICS_SEQUENCING_MODE_FAST)
Definition: Federate.cpp:1178
helics::Federate::waitCommand
std::pair< std::string, std::string > waitCommand()
Definition: Federate.cpp:1259
helics::operator==
bool operator==(const SmallBuffer &sb1, const SmallBuffer &sb2)
Definition: SmallBuffer.hpp:376
helics::Interface::getHandle
InterfaceHandle getHandle() const
Definition: application_api/Federate.hpp:642
helics::Federate::registerCloningFilter
CloningFilter & registerCloningFilter(const std::string &filterName, const std::string &inputType=std::string(), const std::string &outputType=std::string())
Definition: Federate.cpp:1280
helics::Interface::getInfo
const std::string & getInfo() const
Definition: Federate.cpp:1395
helics::Federate::setGlobal
void setGlobal(const std::string &valueName, const std::string &value)
Definition: Federate.cpp:1242
helics::make_cloning_filter
CloningFilter & make_cloning_filter(FilterTypes type, Federate *mFed, const std::string &delivery, const std::string &name)
Definition: Filters.cpp:265
helics::FederateInfo::coreName
std::string coreName
the name of the core
Definition: FederateInfo.hpp:41
helics::make_filter
Filter & make_filter(FilterTypes type, Federate *mFed, const std::string &name)
Definition: Filters.cpp:215
helics::Interface::getDestinationTargets
const std::string & getDestinationTargets() const
Definition: Federate.cpp:1465
helics::operator!=
bool operator!=(const SmallBuffer &sb1, const SmallBuffer &sb2)
Definition: SmallBuffer.hpp:382
helics
the main namespace for the helics co-simulation library User functions will be in the helics namespac...
Definition: AsyncFedCallInfo.hpp:14
helics::Core::getHandleName
virtual const std::string & getHandleName(InterfaceHandle handle) const =0
helics::Core::setHandleOption
virtual void setHandleOption(InterfaceHandle handle, int32_t option, int32_t option_value)=0
helics::Federate::addDependency
void addDependency(const std::string &fedName)
Definition: Federate.cpp:1264
helics::Federate::requestTimeIterativeAsync
void requestTimeIterativeAsync(Time nextInternalTimeStep, IterationRequest iterate)
Definition: Federate.cpp:729
helics::FederateInfo::separator
char separator
separator for global name of localFederates
Definition: FederateInfo.hpp:23
helics::CoreFactory::cleanUpCores
size_t cleanUpCores()
Definition: CoreFactory.cpp:320
helics::iteration_time
Definition: helicsTime.hpp:47
HELICS_LOG_LEVEL_SUMMARY
@ HELICS_LOG_LEVEL_SUMMARY
Definition: helics_enums.h:187
helics::IterationResult::NEXT_STEP
@ NEXT_STEP
helics::Federate::logWarningMessage
void logWarningMessage(const std::string &message) const
Definition: application_api/Federate.hpp:592
HELICS_SEQUENCING_MODE_FAST
@ HELICS_SEQUENCING_MODE_FAST
Definition: helics_enums.h:365
helics::CoreFactory::getEmptyCore
std::shared_ptr< Core > getEmptyCore()
Definition: CoreFactory.cpp:95
helics::Federate::requestTimeAdvance
Time requestTimeAdvance(Time timeDelta)
Definition: application_api/Federate.hpp:232
helics::Federate::logErrorMessage
void logErrorMessage(const std::string &message) const
Definition: application_api/Federate.hpp:585
helics::FunctionExecutionFailure
Definition: core-exceptions.hpp:29
helics::Interface::mName
std::string mName
the name or key of the interface
Definition: application_api/Federate.hpp:631
helics::Federate::Modes::PENDING_ITERATIVE_TIME
@ PENDING_ITERATIVE_TIME
helics::Federate::requestTimeIterativeComplete
iteration_time requestTimeIterativeComplete()
Definition: Federate.cpp:761
HELICS_LOG_LEVEL_ERROR
@ HELICS_LOG_LEVEL_ERROR
Definition: helics_enums.h:181
helics::Federate::logDebugMessage
void logDebugMessage(const std::string &message) const
Definition: application_api/Federate.hpp:606
helics::IterationResult::ITERATING
@ ITERATING
indicator that the iterations need to continue
helics::LocalFederateId
Definition: LocalFederateId.hpp:22
helics::generateFullCoreInitString
std::string generateFullCoreInitString(const FederateInfo &fi)
Definition: FederateInfo.cpp:821
helics::Federate::finalize
void finalize()
Definition: Federate.cpp:508
helics::Federate
Definition: application_api/Federate.hpp:47
helics::Federate::getCorePointer
const std::shared_ptr< Core > & getCorePointer()
Definition: application_api/Federate.hpp:572
helics::Core::getExtractionUnits
virtual const std::string & getExtractionUnits(InterfaceHandle handle) const =0
helics::Federate::requestNextStep
Time requestNextStep()
Definition: application_api/Federate.hpp:227
helics::Federate::setFilterOperator
void setFilterOperator(const Filter &filt, std::shared_ptr< FilterOperator > op)
register a operator for the specified filter
Definition: Federate.cpp:1328
gmlc::libguarded::shared_guarded
Definition: application_api/Federate.hpp:28
helics::Federate::Modes::FINISHED
@ FINISHED
helics::Federate::Modes::PENDING_INIT
@ PENDING_INIT
helics::Federate::registerGlobalFilter
Filter & registerGlobalFilter(const std::string &filterName, const std::string &inputType=std::string(), const std::string &outputType=std::string())
Definition: Federate.cpp:1291
helics::Federate::finalizeComplete
void finalizeComplete()
Definition: Federate.cpp:588
helics::Federate::requestTime
Time requestTime(Time nextInternalTimeStep)
Definition: Federate.cpp:655
helics::loadCores
bool loadCores()
Definition: loadCores.cpp:149
helics::Federate::strictConfigChecking
bool strictConfigChecking
Definition: application_api/Federate.hpp:80
helics::Federate::observerMode
bool observerMode
Definition: application_api/Federate.hpp:84
helics::Interface::setTag
void setTag(const std::string &tag, const std::string &value)
Definition: Federate.cpp:1415
helics::Federate::setQueryCallback
void setQueryCallback(const std::function< std::string(std::string_view)> &queryFunction)
Definition: Federate.cpp:1227
helics::Federate::Modes::STARTUP
@ STARTUP
helics::Interface::setOption
virtual void setOption(int32_t option, int32_t value=1)
Definition: Federate.cpp:1425
helics::Interface::close
void close()
Definition: Federate.cpp:1475
helics::Federate::coreObject
std::shared_ptr< Core > coreObject
reference to the core simulation API
Definition: application_api/Federate.hpp:89
helics::Core::removeTarget
virtual void removeTarget(InterfaceHandle handle, std::string_view targetToRemove)=0
helics::Federate::setTag
void setTag(const std::string &tag, const std::string &value)
Definition: Federate.cpp:452
helics::Federate::getIntegerProperty
int getIntegerProperty(int32_t option) const
Definition: Federate.cpp:482
helics::Federate::Federate
Federate() noexcept
Definition: Federate.cpp:167
helics::Federate::queryComplete
std::string queryComplete(QueryId queryIndex)
Definition: Federate.cpp:1216
helics::Federate::requestTimeComplete
Time requestTimeComplete()
Definition: Federate.cpp:743
helics::HelicsException
Definition: core-exceptions.hpp:18
helics::Federate::requestTimeAsync
void requestTimeAsync(Time nextInternalTimeStep)
Definition: Federate.cpp:715
helics::Federate::filterCount
int filterCount() const
Definition: Federate.cpp:1151
helics::Federate::Modes::EXECUTING
@ EXECUTING
helics::FederateInfo::defName
std::string defName
a default name to use for a federate
Definition: FederateInfo.hpp:40
helics::Federate::disconnect
virtual void disconnect()
Definition: Federate.cpp:599
helics::FilterTypes
FilterTypes
Definition: Filters.hpp:21
helics::generateJsonErrorResponse
std::string generateJsonErrorResponse(JsonErrorCodes code, const std::string &message)
Definition: JsonGeneration.hpp:36