helics  2.8.1
core/Core.hpp
Go to the documentation of this file.
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 
9 #include "core-data.hpp"
10 #include "federate_id.hpp"
11 
12 #include <functional>
13 #include <memory>
14 #include <string>
15 #include <utility>
16 #include <vector>
17 
38 namespace helics {
39 class CoreFederateInfo;
40 
42 class Core {
43  public:
45  Core() = default;
47  virtual ~Core() = default;
48 
58  [[deprecated("please use configure instead")]] void
59  initialize(const std::string& configureString)
60  {
61  configure(configureString);
62  }
68  [[deprecated("please use configureFromArgs instead")]] void initializeFromArgs(int argc,
69  char* argv[])
70  {
71  configureFromArgs(argc, argv);
72  }
79  virtual void configure(const std::string& configureString) = 0;
86  virtual void configureFromArgs(int argc, char* argv[]) = 0;
93  virtual void configureFromVector(std::vector<std::string> args) = 0;
97  virtual bool isConfigured() const = 0;
101  [[deprecated("please use isConfigured instead")]] bool isInitialized() const
102  {
103  return isConfigured();
104  }
109  virtual bool connect() = 0;
113  virtual bool isConnected() const = 0;
114 
118  virtual void disconnect() = 0;
119 
120  /*return true if the core has an error*/
121  virtual bool hasError() const = 0;
125  virtual bool waitForDisconnect(
126  std::chrono::milliseconds msToWait = std::chrono::milliseconds(0)) const = 0;
127 
130  virtual bool isOpenToNewFederates() const = 0;
133  virtual const std::string& getIdentifier() const = 0;
135  virtual const std::string& getAddress() const = 0;
136 
141  virtual void globalError(local_federate_id federateID,
142  int32_t errorCode,
143  const std::string& errorString) = 0;
144 
148  virtual void localError(local_federate_id federateID,
149  int32_t errorCode,
150  const std::string& errorString) = 0;
151 
155  void error(local_federate_id federateID, int32_t errorCode = -1)
156  {
157  globalError(federateID, errorCode, "");
158  }
160  virtual int getErrorCode() const = 0;
162  virtual std::string getErrorMessage() const = 0;
169  virtual void finalize(local_federate_id federateID) = 0;
170 
194  virtual void enterInitializingMode(local_federate_id federateID) = 0;
195 
199  virtual void setCoreReadyToInit() = 0;
200 
212  iteration_request iterate = NO_ITERATION) = 0;
213 
222  virtual local_federate_id registerFederate(const std::string& name,
223  const CoreFederateInfo& info) = 0;
224 
229  virtual const std::string& getFederateName(local_federate_id federateID) const = 0;
230 
235  virtual local_federate_id getFederateId(const std::string& name) const = 0;
236 
241  virtual int32_t getFederationSize() = 0;
242 
263  virtual Time timeRequest(local_federate_id federateID, Time next) = 0;
264 
294  Time next,
295  iteration_request iterate) = 0;
296 
300  virtual uint64_t getCurrentReiteration(local_federate_id federateID) const = 0;
301 
307  virtual void
308  setTimeProperty(local_federate_id federateID, int32_t property, Time timeValue) = 0;
314  virtual Time getTimeProperty(local_federate_id federateID, int32_t property) const = 0;
320  virtual void
321  setIntegerProperty(local_federate_id federateID, int32_t property, int16_t propValue) = 0;
327  virtual int16_t getIntegerProperty(local_federate_id federateID, int32_t property) const = 0;
332  virtual Time getCurrentTime(local_federate_id federateID) const = 0;
333 
340  virtual void setFlagOption(local_federate_id federateID, int32_t flag, bool flagValue) = 0;
341 
348  virtual bool getFlagOption(local_federate_id federateID, int32_t flag) const = 0;
364  const std::string& key,
365  const std::string& type,
366  const std::string& units) = 0;
367 
373  const std::string& key) const = 0;
374 
385  const std::string& key,
386  const std::string& type,
387  const std::string& units) = 0;
392  virtual interface_handle getInput(local_federate_id federateID,
393  const std::string& key) const = 0;
394 
398  virtual const std::string& getHandleName(interface_handle handle) const = 0;
403  virtual void removeTarget(interface_handle handle, const std::string& targetToRemove) = 0;
404 
408  virtual const std::string& getExtractionUnits(interface_handle handle) const = 0;
417  virtual const std::string& getInjectionUnits(interface_handle handle) const = 0;
418 
422  [[deprecated("please use getExtractionUnits instead")]] const std::string&
424  {
425  return getExtractionUnits(handle);
426  }
434  virtual const std::string& getInjectionType(interface_handle handle) const = 0;
435 
442  virtual const std::string& getExtractionType(interface_handle handle) const = 0;
443 
449  virtual void setHandleOption(interface_handle handle, int32_t option, int32_t option_value) = 0;
450 
455  virtual int32_t getHandleOption(interface_handle handle, int32_t option) const = 0;
456 
460  virtual void closeHandle(interface_handle handle) = 0;
468  virtual void setValue(interface_handle handle, const char* data, uint64_t len) = 0;
469 
476  virtual const std::shared_ptr<const data_block>& getValue(interface_handle handle,
477  uint32_t* inputIndex = nullptr) = 0;
478 
483  virtual const std::vector<std::shared_ptr<const data_block>>&
484  getAllValues(interface_handle handle) = 0;
485 
494  virtual const std::vector<interface_handle>& getValueUpdates(local_federate_id federateID) = 0;
495 
507  const std::string& name,
508  const std::string& type) = 0;
509 
515  const std::string& name) const = 0;
516 
528  virtual interface_handle registerCloningFilter(const std::string& filterName,
529  const std::string& type_in,
530  const std::string& type_out) = 0;
531 
543  virtual interface_handle registerFilter(const std::string& filterName,
544  const std::string& type_in,
545  const std::string& type_out) = 0;
555  virtual void addDestinationTarget(interface_handle handle, const std::string& dest) = 0;
556 
564  virtual void addSourceTarget(interface_handle handle, const std::string& name) = 0;
565 
570  virtual interface_handle getFilter(const std::string& name) const = 0;
571 
581  virtual void addDependency(local_federate_id federateID, const std::string& federateName) = 0;
582 
589  virtual void registerFrequentCommunicationsPair(const std::string& source,
590  const std::string& dest) = 0;
591 
594  virtual void makeConnections(const std::string& file) = 0;
595 
599  virtual void dataLink(const std::string& source, const std::string& target) = 0;
604  virtual void addSourceFilterToEndpoint(const std::string& filter,
605  const std::string& target) = 0;
610  virtual void addDestinationFilterToEndpoint(const std::string& filter,
611  const std::string& target) = 0;
624  virtual void send(interface_handle sourceHandle,
625  const std::string& destination,
626  const char* data,
627  uint64_t length) = 0;
628 
645  virtual void sendEvent(Time time,
646  interface_handle sourceHandle,
647  const std::string& destination,
648  const char* data,
649  uint64_t length) = 0;
650 
657  virtual void sendMessage(interface_handle sourceHandle, std::unique_ptr<Message> message) = 0;
658 
662  virtual uint64_t receiveCount(interface_handle destination) = 0;
663 
668  virtual std::unique_ptr<Message> receive(interface_handle destination) = 0;
669 
676  virtual std::unique_ptr<Message> receiveAny(local_federate_id federateID,
677  interface_handle& endpoint_id) = 0;
678 
682  virtual uint64_t receiveCountAny(local_federate_id federateID) = 0;
683 
689  virtual void
690  logMessage(local_federate_id federateID, int logLevel, const std::string& messageToLog) = 0;
691 
696  virtual void setFilterOperator(interface_handle filter,
697  std::shared_ptr<FilterOperator> callback) = 0;
698 
706  virtual void setLoggingCallback(
707  local_federate_id federateID,
708  std::function<void(int, const std::string&, const std::string&)> logFunction) = 0;
709 
711  virtual void setLoggingLevel(int logLevel) = 0;
712 
714  virtual void setLogFile(const std::string& lfile) = 0;
715 
721  virtual void setGlobal(const std::string& valueName, const std::string& value) = 0;
732  virtual std::string query(const std::string& target,
733  const std::string& queryStr,
734  helics_sequencing_mode mode) = 0;
735 
745  virtual void setQueryCallback(local_federate_id federateID,
746  std::function<std::string(const std::string&)> queryFunction) = 0;
747 
753  virtual void setInterfaceInfo(interface_handle handle, std::string info) = 0;
754 
760  virtual const std::string& getInterfaceInfo(interface_handle handle) const = 0;
761 };
762 
763 } // namespace helics
data
@ data
print timing+data transmissions
Definition: loggingHelper.hpp:30
helics::Core::receiveCountAny
virtual uint64_t receiveCountAny(local_federate_id federateID)=0
helics::Core::query
virtual std::string query(const std::string &target, const std::string &queryStr, helics_sequencing_mode mode)=0
helics::Core::getFederateName
virtual const std::string & getFederateName(local_federate_id federateID) const =0
helics::Core::setValue
virtual void setValue(interface_handle handle, const char *data, uint64_t len)=0
helics::Core::setCoreReadyToInit
virtual void setCoreReadyToInit()=0
helics::Core::initializeFromArgs
void initializeFromArgs(int argc, char *argv[])
Definition: core/Core.hpp:68
helics::Core::send
virtual void send(interface_handle sourceHandle, const std::string &destination, const char *data, uint64_t length)=0
helics::Core::setHandleOption
virtual void setHandleOption(interface_handle handle, int32_t option, int32_t option_value)=0
helics::Core::enterExecutingMode
virtual iteration_result enterExecutingMode(local_federate_id federateID, iteration_request iterate=NO_ITERATION)=0
helics::Core::getFlagOption
virtual bool getFlagOption(local_federate_id federateID, int32_t flag) const =0
helics::Core::getInterfaceInfo
virtual const std::string & getInterfaceInfo(interface_handle handle) const =0
helics::iteration_request
iteration_request
Definition: core-types.hpp:90
helics::Core::isOpenToNewFederates
virtual bool isOpenToNewFederates() const =0
helics::Core::getErrorCode
virtual int getErrorCode() const =0
helics::Core::receive
virtual std::unique_ptr< Message > receive(interface_handle destination)=0
helics::Core::addDestinationTarget
virtual void addDestinationTarget(interface_handle handle, const std::string &dest)=0
helics::local_federate_id
Definition: federate_id.hpp:22
helics::Core::addSourceFilterToEndpoint
virtual void addSourceFilterToEndpoint(const std::string &filter, const std::string &target)=0
helics::Core::configureFromArgs
virtual void configureFromArgs(int argc, char *argv[])=0
core-data.hpp
helics::Core::getExtractionType
virtual const std::string & getExtractionType(interface_handle handle) const =0
helics::iteration_result
iteration_result
Definition: core-types.hpp:81
helics::Core::isInitialized
bool isInitialized() const
Definition: core/Core.hpp:101
helics::Core::isConfigured
virtual bool isConfigured() const =0
helics::Core::addSourceTarget
virtual void addSourceTarget(interface_handle handle, const std::string &name)=0
helics::Time
TimeRepresentation< count_time< 9 > > Time
Definition: helics-time.hpp:27
helics::Core::registerPublication
virtual interface_handle registerPublication(local_federate_id federateID, const std::string &key, const std::string &type, const std::string &units)=0
helics::Core::sendMessage
virtual void sendMessage(interface_handle sourceHandle, std::unique_ptr< Message > message)=0
helics::Core::getInjectionType
virtual const std::string & getInjectionType(interface_handle handle) const =0
helics::Core::error
void error(local_federate_id federateID, int32_t errorCode=-1)
Definition: core/Core.hpp:155
helics::Core::getAllValues
virtual const std::vector< std::shared_ptr< const data_block > > & getAllValues(interface_handle handle)=0
helics::Core::getFederationSize
virtual int32_t getFederationSize()=0
helics::Core::getPublication
virtual interface_handle getPublication(local_federate_id federateID, const std::string &key) const =0
helics::Core::getEndpoint
virtual interface_handle getEndpoint(local_federate_id federateID, const std::string &name) const =0
helics::Core::sendEvent
virtual void sendEvent(Time time, interface_handle sourceHandle, const std::string &destination, const char *data, uint64_t length)=0
helics::Core::setTimeProperty
virtual void setTimeProperty(local_federate_id federateID, int32_t property, Time timeValue)=0
helics::Core::getAddress
virtual const std::string & getAddress() const =0
helics_sequencing_mode
helics_sequencing_mode
Definition: helics_enums.h:333
helics::Core::removeTarget
virtual void removeTarget(interface_handle handle, const std::string &targetToRemove)=0
helics::Core::localError
virtual void localError(local_federate_id federateID, int32_t errorCode, const std::string &errorString)=0
helics::Core
Definition: core/Core.hpp:42
helics::Core::closeHandle
virtual void closeHandle(interface_handle handle)=0
helics::Core::addDestinationFilterToEndpoint
virtual void addDestinationFilterToEndpoint(const std::string &filter, const std::string &target)=0
helics::Core::isConnected
virtual bool isConnected() const =0
helics::Core::registerFilter
virtual interface_handle registerFilter(const std::string &filterName, const std::string &type_in, const std::string &type_out)=0
helics::Core::configureFromVector
virtual void configureFromVector(std::vector< std::string > args)=0
helics::Core::initialize
void initialize(const std::string &configureString)
Definition: core/Core.hpp:59
helics::Core::setIntegerProperty
virtual void setIntegerProperty(local_federate_id federateID, int32_t property, int16_t propValue)=0
helics::Core::setGlobal
virtual void setGlobal(const std::string &valueName, const std::string &value)=0
helics::Core::getUnits
const std::string & getUnits(interface_handle handle) const
Definition: core/Core.hpp:423
helics::Core::configure
virtual void configure(const std::string &configureString)=0
helics::Core::registerInput
virtual interface_handle registerInput(local_federate_id federateID, const std::string &key, const std::string &type, const std::string &units)=0
helics::Core::Core
Core()=default
helics::Core::logMessage
virtual void logMessage(local_federate_id federateID, int logLevel, const std::string &messageToLog)=0
NO_ITERATION
constexpr auto NO_ITERATION
Definition: core-types.hpp:101
helics::Core::getCurrentTime
virtual Time getCurrentTime(local_federate_id federateID) const =0
helics::Core::getInjectionUnits
virtual const std::string & getInjectionUnits(interface_handle handle) const =0
helics::interface_handle
Definition: federate_id.hpp:65
helics::Core::addDependency
virtual void addDependency(local_federate_id federateID, const std::string &federateName)=0
helics::Core::receiveCount
virtual uint64_t receiveCount(interface_handle destination)=0
helics::Core::getIntegerProperty
virtual int16_t getIntegerProperty(local_federate_id federateID, int32_t property) const =0
helics::Core::getIdentifier
virtual const std::string & getIdentifier() const =0
helics::Core::enterInitializingMode
virtual void enterInitializingMode(local_federate_id federateID)=0
helics::Core::getHandleName
virtual const std::string & getHandleName(interface_handle handle) const =0
helics::Core::getFilter
virtual interface_handle getFilter(const std::string &name) const =0
helics::Core::setLoggingLevel
virtual void setLoggingLevel(int logLevel)=0
helics::Core::timeRequest
virtual Time timeRequest(local_federate_id federateID, Time next)=0
helics::Core::connect
virtual bool connect()=0
helics::Core::receiveAny
virtual std::unique_ptr< Message > receiveAny(local_federate_id federateID, interface_handle &endpoint_id)=0
helics::Core::disconnect
virtual void disconnect()=0
helics
the main namespace for the helics co-simulation library User functions will be in the helics namespac...
Definition: AsyncFedCallInfo.hpp:14
helics::Core::setLogFile
virtual void setLogFile(const std::string &lfile)=0
helics::Core::setLoggingCallback
virtual void setLoggingCallback(local_federate_id federateID, std::function< void(int, const std::string &, const std::string &)> logFunction)=0
helics::CoreFederateInfo
Definition: CoreFederateInfo.hpp:16
helics::iteration_time
Definition: helics-time.hpp:47
helics::Core::getTimeProperty
virtual Time getTimeProperty(local_federate_id federateID, int32_t property) const =0
helics::Core::registerEndpoint
virtual interface_handle registerEndpoint(local_federate_id federateID, const std::string &name, const std::string &type)=0
helics::Core::finalize
virtual void finalize(local_federate_id federateID)=0
helics::Core::globalError
virtual void globalError(local_federate_id federateID, int32_t errorCode, const std::string &errorString)=0
helics::Core::getValue
virtual const std::shared_ptr< const data_block > & getValue(interface_handle handle, uint32_t *inputIndex=nullptr)=0
helics::Core::dataLink
virtual void dataLink(const std::string &source, const std::string &target)=0
helics::Core::registerFederate
virtual local_federate_id registerFederate(const std::string &name, const CoreFederateInfo &info)=0
helics::Core::getInput
virtual interface_handle getInput(local_federate_id federateID, const std::string &key) const =0
helics::Core::getFederateId
virtual local_federate_id getFederateId(const std::string &name) const =0
helics::Core::requestTimeIterative
virtual iteration_time requestTimeIterative(local_federate_id federateID, Time next, iteration_request iterate)=0
helics::Core::setFilterOperator
virtual void setFilterOperator(interface_handle filter, std::shared_ptr< FilterOperator > callback)=0
helics::Core::getErrorMessage
virtual std::string getErrorMessage() const =0
helics::Core::waitForDisconnect
virtual bool waitForDisconnect(std::chrono::milliseconds msToWait=std::chrono::milliseconds(0)) const =0
helics::Core::setInterfaceInfo
virtual void setInterfaceInfo(interface_handle handle, std::string info)=0
helics::Core::~Core
virtual ~Core()=default
helics::Core::getValueUpdates
virtual const std::vector< interface_handle > & getValueUpdates(local_federate_id federateID)=0
helics::Core::getCurrentReiteration
virtual uint64_t getCurrentReiteration(local_federate_id federateID) const =0
helics::Core::getHandleOption
virtual int32_t getHandleOption(interface_handle handle, int32_t option) const =0
helics::Core::registerCloningFilter
virtual interface_handle registerCloningFilter(const std::string &filterName, const std::string &type_in, const std::string &type_out)=0
helics::Core::makeConnections
virtual void makeConnections(const std::string &file)=0
helics::Core::registerFrequentCommunicationsPair
virtual void registerFrequentCommunicationsPair(const std::string &source, const std::string &dest)=0
helics::Core::getExtractionUnits
virtual const std::string & getExtractionUnits(interface_handle handle) const =0
helics::Core::setFlagOption
virtual void setFlagOption(local_federate_id federateID, int32_t flag, bool flagValue)=0
helics::Core::setQueryCallback
virtual void setQueryCallback(local_federate_id federateID, std::function< std::string(const std::string &)> queryFunction)=0