helics  3.5.2
Public Member Functions | Protected Member Functions | List of all members
helics::MessageFederate Class Reference

#include <MessageFederate.hpp>

+ Inheritance diagram for helics::MessageFederate:

Public Member Functions

 MessageFederate (std::string_view fedName, const FederateInfo &fedInfo)
 
 MessageFederate (std::string_view fedName, const std::shared_ptr< Core > &core, const FederateInfo &fedInfo=FederateInfo{})
 
 MessageFederate (std::string_view fedName, CoreApp &core, const FederateInfo &fedInfo=FederateInfo{})
 
 MessageFederate (std::string_view name, const std::string &configString)
 
 MessageFederate (const std::string &configString)
 
 MessageFederate (const char *configString)
 
 MessageFederate (MessageFederate &&mFed) noexcept
 
 MessageFederate (const MessageFederate &mFed)=delete
 
 MessageFederate ()
 
 MessageFederate (bool res)
 
virtual ~MessageFederate ()
 
MessageFederateoperator= (MessageFederate &&mFed) noexcept
 
MessageFederateoperator= (const MessageFederate &mFed)=delete
 
EndpointregisterEndpoint (std::string_view eptName=std::string_view(), std::string_view type=std::string_view())
 
EndpointregisterTargetedEndpoint (std::string_view eptName=std::string_view(), std::string_view type=std::string_view())
 
EndpointregisterGlobalEndpoint (std::string_view eptName, std::string_view type=std::string_view())
 
EndpointregisterGlobalTargetedEndpoint (std::string_view eptName, std::string_view type=std::string_view())
 
EndpointregisterIndexedEndpoint (std::string_view eptName, int index1, std::string_view type=std::string_view())
 
EndpointregisterDataSink (std::string_view sinkName=std::string_view())
 
virtual void registerInterfaces (const std::string &configString) override
 
void registerMessageInterfaces (const std::string &configString)
 
void subscribe (const Endpoint &ept, std::string_view key)
 
bool hasMessage () const
 
bool hasMessage (const Endpoint &ept) const
 
uint64_t pendingMessageCount (const Endpoint &ept) const
 
uint64_t pendingMessageCount () const
 
std::unique_ptr< MessagegetMessage (const Endpoint &ept)
 
std::unique_ptr< MessagegetMessage ()
 
EndpointgetEndpoint (std::string_view name) const
 
EndpointgetEndpoint (int index) const
 
EndpointgetDataSink (std::string_view name) const
 
void setMessageNotificationCallback (const std::function< void(Endpoint &, Time)> &callback)
 
void setMessageNotificationCallback (const Endpoint &ept, const std::function< void(Endpoint &, Time)> &callback)
 
virtual void disconnect () override
 
int getEndpointCount () const
 
- Public Member Functions inherited from helics::Federate
 Federate (std::string_view fedname, const FederateInfo &fedInfo)
 
 Federate (std::string_view fedname, const std::shared_ptr< Core > &core, const FederateInfo &fedInfo=FederateInfo{})
 
 Federate (std::string_view fedname, CoreApp &core, const FederateInfo &fedInfo=FederateInfo{})
 
 Federate (const std::string &configString)
 
 Federate (std::string_view fedname, const std::string &configString)
 
 Federate () noexcept
 
 Federate (Federate &&fed) noexcept
 
 Federate (const Federate &fed)=delete
 
virtual ~Federate ()
 
Federateoperator= (Federate &&fed) noexcept
 
Federateoperator= (const Federate &fed)=delete
 
void enterInitializingMode ()
 
void enterInitializingModeAsync ()
 
bool isAsyncOperationCompleted () const
 
void enterInitializingModeComplete ()
 
void enterInitializingModeIterative ()
 
void enterInitializingModeIterativeAsync ()
 
void enterInitializingModeIterativeComplete ()
 
IterationResult enterExecutingMode (IterationRequest iterate=IterationRequest::NO_ITERATIONS)
 
void enterExecutingModeAsync (IterationRequest iterate=IterationRequest::NO_ITERATIONS)
 
IterationResult enterExecutingModeComplete ()
 
void finalize ()
 
void finalizeAsync ()
 
void finalizeComplete ()
 
void processCommunication (std::chrono::milliseconds period=std::chrono::milliseconds(0))
 
void localError (int errorcode, std::string_view message)
 
void globalError (int errorcode, std::string_view message)
 
void localError (int errorcode)
 
void globalError (int errorcode)
 
void setSeparator (char separator)
 
Time requestTime (Time nextInternalTimeStep)
 
Time requestNextStep ()
 
Time requestTimeAdvance (Time timeDelta)
 
iteration_time requestTimeIterative (Time nextInternalTimeStep, IterationRequest iterate)
 
void requestTimeAsync (Time nextInternalTimeStep)
 
void requestTimeIterativeAsync (Time nextInternalTimeStep, IterationRequest iterate)
 
Time requestTimeComplete ()
 
iteration_time requestTimeIterativeComplete ()
 
void setTag (std::string_view tag, std::string_view value)
 
const std::string & getTag (std::string_view tag) const
 
virtual void setProperty (int32_t option, double timeValue)
 
virtual void setProperty (int32_t option, Time timeValue)
 
virtual void setFlagOption (int flag, bool flagValue=true)
 
virtual void setProperty (int32_t option, int32_t optionValue)
 
virtual Time getTimeProperty (int32_t option) const
 
virtual bool getFlagOption (int flag) const
 
virtual int getIntegerProperty (int32_t option) const
 
void setLoggingCallback (const std::function< void(int, std::string_view, std::string_view)> &logFunction)
 
void setInitializingEntryCallback (std::function< void(bool)> callback)
 
void setExecutingEntryCallback (std::function< void()> callback)
 
void setTimeRequestEntryCallback (std::function< void(Time, Time, bool)> callback)
 
void setTimeUpdateCallback (std::function< void(Time, bool)> callback)
 
void setModeUpdateCallback (std::function< void(Modes, Modes)> callback)
 
void setTimeRequestReturnCallback (std::function< void(Time, bool)> callback)
 
void setCosimulationTerminatedCallback (std::function< void()> callback)
 
void setErrorHandlerCallback (std::function< void(int, std::string_view)> errorHandlerCallback)
 
std::string query (std::string_view target, std::string_view queryStr, HelicsSequencingModes mode=HELICS_SEQUENCING_MODE_FAST)
 
std::string query (std::string_view queryStr, HelicsSequencingModes mode=HELICS_SEQUENCING_MODE_FAST)
 
QueryId queryAsync (std::string_view target, std::string_view queryStr, HelicsSequencingModes mode=HELICS_SEQUENCING_MODE_FAST)
 
QueryId queryAsync (std::string_view queryStr, HelicsSequencingModes mode=HELICS_SEQUENCING_MODE_FAST)
 
std::string queryComplete (QueryId queryIndex)
 
bool isQueryCompleted (QueryId queryIndex) const
 
void setQueryCallback (const std::function< std::string(std::string_view)> &queryFunction)
 
void setGlobal (std::string_view valueName, std::string_view value)
 
void addAlias (std::string_view interfaceName, std::string_view alias)
 
void sendCommand (std::string_view target, std::string_view commandStr, HelicsSequencingModes mode=HelicsSequencingModes::HELICS_SEQUENCING_MODE_FAST)
 
std::pair< std::string, std::string > getCommand ()
 
std::pair< std::string, std::string > waitCommand ()
 
void addDependency (std::string_view fedName)
 
FilterregisterGlobalFilter (std::string_view filterName, std::string_view inputType=std::string_view{}, std::string_view outputType=std::string_view{})
 
CloningFilterregisterGlobalCloningFilter (std::string_view filterName, std::string_view inputType=std::string_view{}, std::string_view outputType=std::string_view{})
 
FilterregisterFilter (std::string_view filterName, std::string_view inputType=std::string_view{}, std::string_view outputType=std::string_view{})
 
CloningFilterregisterCloningFilter (std::string_view filterName, std::string_view inputType=std::string_view{}, std::string_view outputType=std::string_view{})
 
FilterregisterFilter ()
 
TranslatorregisterGlobalTranslator (std::int32_t translatorType, std::string_view translatorName, std::string_view endpointType=std::string_view{}, std::string_view units=std::string_view{})
 
TranslatorregisterTranslator (std::int32_t translatorType, std::string_view translatorName, std::string_view endpointType=std::string_view{}, std::string_view units=std::string_view{})
 
TranslatorregisterGlobalTranslator (std::string_view translatorName, std::string_view endpointType=std::string_view{}, std::string_view units=std::string_view{})
 
TranslatorregisterTranslator (std::string_view translatorName, std::string_view endpointType=std::string_view{}, std::string_view units=std::string_view{})
 
TranslatorregisterTranslator ()
 
CloningFilterregisterCloningFilter ()
 
const FiltergetFilter (std::string_view filterName) const
 
const FiltergetFilter (int index) const
 
FiltergetFilter (std::string_view filterName)
 
FiltergetFilter (int index)
 
void setFilterOperator (const Filter &filt, std::shared_ptr< FilterOperator > filtOp)
 register a operator for the specified filter More...
 
int getFilterCount () const
 
const TranslatorgetTranslator (std::string_view translatorName) const
 
const TranslatorgetTranslator (int index) const
 
TranslatorgetTranslator (std::string_view translatorName)
 
TranslatorgetTranslator (int index)
 
void setTranslatorOperator (const Translator &trans, std::shared_ptr< TranslatorOperator > transOp)
 register an operator for the specified translator More...
 
int getTranslatorCount () const
 
const std::string & getConfigFile () const
 
void registerConnectorInterfaces (const std::string &configString)
 
void registerFilterInterfaces (const std::string &configString)
 
auto getID () const noexcept
 
Modes getCurrentMode () const noexcept
 
Time getCurrentTime () const noexcept
 
const std::string & getName () const
 
const std::shared_ptr< Core > & getCorePointer ()
 
void logMessage (int level, std::string_view message) const
 
void logErrorMessage (std::string_view message) const
 
void logWarningMessage (std::string_view message) const
 
void logInfoMessage (std::string_view message) const
 
void logDebugMessage (std::string_view message) const
 
void completeOperation ()
 

Protected Member Functions

virtual void startupToInitializeStateTransition () override
 
virtual void initializeToExecuteStateTransition (iteration_time result) override
 
virtual void updateTime (Time newTime, Time oldTime) override
 
virtual std::string localQuery (std::string_view queryStr) const override
 
- Protected Member Functions inherited from helics::Federate
void enteringInitializingMode (IterationResult iterating)
 
void enteringExecutingMode (iteration_time res)
 
void finalizeOperations ()
 
void preTimeRequestOperations (Time nextStep, bool iterating)
 
void postTimeRequestOperations (Time newTime, bool iterating)
 
virtual void disconnectTransition ()
 
std::string localNameGenerator (std::string_view addition) const
 
void handleError (int errorCode, std::string_view errorString, bool noThrow)
 
void setAsyncCheck (std::function< bool()> asyncCheck)
 

Additional Inherited Members

- Public Types inherited from helics::Federate
enum class  Modes : char {
  STARTUP = 0 , INITIALIZING = 1 , EXECUTING = 2 , FINALIZE = 3 ,
  ERROR_STATE = 4 , PENDING_INIT = 5 , PENDING_EXEC = 6 , PENDING_TIME = 7 ,
  PENDING_ITERATIVE_TIME = 8 , PENDING_FINALIZE = 9 , FINISHED = 10 , PENDING_ITERATIVE_INIT = 12
}
 
- Protected Attributes inherited from helics::Federate
std::atomic< ModescurrentMode {Modes::STARTUP}
 the current state of the simulation
 
char nameSegmentSeparator = '/'
 the separator between automatically prependend names
 
bool strictConfigChecking {true}
 
bool useJsonSerialization {false}
 
bool observerMode {false}
 
bool retriggerTimeRequest {false}
 
bool singleThreadFederate {false}
 
bool hasPotentialInterfaces {false}
 
std::shared_ptr< CorecoreObject
 reference to the core simulation API
 
Time mCurrentTime = Time::minVal()
 the current simulation time
 
Time mStopTime = Time::maxVal()
 the stopping time for the federate
 
std::string configFile
 any config file used
 

Detailed Description

class defining the block communication based interface

Constructor & Destructor Documentation

◆ MessageFederate() [1/10]

helics::MessageFederate::MessageFederate ( std::string_view  fedName,
const FederateInfo fedInfo 
)

constructor taking a federate information structure and using the default core

Parameters
fedNamethe name of the messageFederate, can be left empty to use a default or one from fedInfo
fedInfoa federate information structure

◆ MessageFederate() [2/10]

helics::MessageFederate::MessageFederate ( std::string_view  fedName,
const std::shared_ptr< Core > &  core,
const FederateInfo fedInfo = FederateInfo{} 
)

constructor taking a core and a federate information structure, core information in fedInfo is ignored

Parameters
fedNamethe name of the messageFederate, can be left empty to use a default or one from fedInfo
corea shared ptr to a core to join
fedInfoa federate information structure

◆ MessageFederate() [3/10]

helics::MessageFederate::MessageFederate ( std::string_view  fedName,
CoreApp core,
const FederateInfo fedInfo = FederateInfo{} 
)

constructor taking a core and a federate information structure, core information in fedInfo is ignored

Parameters
fedNamethe name of the messageFederate, can be left empty to use a default or one from fedInfo
corea CoreApp object representing the core to connect to
fedInfoa federate information structure

◆ MessageFederate() [4/10]

helics::MessageFederate::MessageFederate ( std::string_view  name,
const std::string &  configString 
)

constructor taking a string with the required information

Parameters
namethe name of the federate, can be empty to get name from config
configStringcan be either a JSON file, TOML file or a string containing JSON code

◆ MessageFederate() [5/10]

helics::MessageFederate::MessageFederate ( const std::string &  configString)
explicit

constructor taking a string with the required information

Parameters
configStringcan be either a JSON file, TOML file or a string containing JSON code, or command line arguments it can also be just the federate name

◆ MessageFederate() [6/10]

helics::MessageFederate::MessageFederate ( const char *  configString)
explicit

constructor taking a string as const char * with the required information

; this constructor is to deconflict with the bool overload which can be triggered if a string literal is passed on some platforms

Parameters
configStringcan be either a JSON file, TOML file or a string containing JSON code, or command line arguments it can also be just the federate name

◆ MessageFederate() [7/10]

helics::MessageFederate::MessageFederate ( MessageFederate &&  mFed)
defaultnoexcept

move constructor

◆ MessageFederate() [8/10]

helics::MessageFederate::MessageFederate ( const MessageFederate mFed)
delete

delete copy constructor

◆ MessageFederate() [9/10]

helics::MessageFederate::MessageFederate ( )

default constructor

◆ MessageFederate() [10/10]

helics::MessageFederate::MessageFederate ( bool  res)
explicit

special constructor should only be used by child classes in constructor due to virtual inheritance

◆ ~MessageFederate()

helics::MessageFederate::~MessageFederate ( )
virtualdefault

destructor

Member Function Documentation

◆ disconnect()

void helics::MessageFederate::disconnect ( )
overridevirtual

disconnect a simulation from the core (will also call finalize before disconnecting if necessary)

Reimplemented from helics::Federate.

Reimplemented in helics::CombinationFederate.

References helics::Federate::disconnect().

Referenced by helics::CombinationFederate::disconnect().

◆ getDataSink()

Endpoint & helics::MessageFederate::getDataSink ( std::string_view  name) const

get a data sink by its name

Parameters
namethe Data Sink
Returns
an Endpoint object representing the data sink

◆ getEndpoint() [1/2]

Endpoint & helics::MessageFederate::getEndpoint ( int  index) const

get an Endpoint from an index

Parameters
indexthe index of the endpoint to retrieve index is 0 based
Returns
an Endpoint

◆ getEndpoint() [2/2]

Endpoint & helics::MessageFederate::getEndpoint ( std::string_view  name) const

get an endpoint or data sink by its name

Parameters
namethe Endpoint
Returns
an Endpoint

References helics::Interface::isValid(), and helics::Federate::localNameGenerator().

◆ getEndpointCount()

int helics::MessageFederate::getEndpointCount ( ) const

get the number of registered endpoints

get a count of the number endpoints registered

◆ getMessage() [1/2]

std::unique_ptr< Message > helics::MessageFederate::getMessage ( )

receive a communication message for any endpoint in the federate

the return order will be in order of endpoint creation then order of arrival all messages for the first endpoint, then all for the second, and so on

Returns
a unique_ptr to a Message object containing the message data

References helics::Federate::currentMode, and helics::Federate::INITIALIZING.

◆ getMessage() [2/2]

std::unique_ptr< Message > helics::MessageFederate::getMessage ( const Endpoint ept)

receive a packet from a particular endpoint

Parameters
eptthe identifier for the endpoint
Returns
a message object

References helics::Federate::currentMode, and helics::Federate::INITIALIZING.

◆ hasMessage()

bool helics::MessageFederate::hasMessage ( ) const

check if the federate has any outstanding messages

References helics::Federate::currentMode, and helics::Federate::INITIALIZING.

◆ initializeToExecuteStateTransition()

void helics::MessageFederate::initializeToExecuteStateTransition ( iteration_time  iterate)
overrideprotectedvirtual

function to deal with any operations that need to occur on the transition from startup to initialize

Reimplemented from helics::Federate.

Reimplemented in helics::CombinationFederate.

Referenced by helics::CombinationFederate::initializeToExecuteStateTransition().

◆ localQuery()

std::string helics::MessageFederate::localQuery ( std::string_view  queryStr) const
overrideprotectedvirtual

function to generate results for a local Query

should return an empty string if the query is not recognized

Reimplemented from helics::Federate.

Reimplemented in helics::CombinationFederate.

Referenced by helics::CombinationFederate::localQuery().

◆ operator=() [1/2]

MessageFederate& helics::MessageFederate::operator= ( const MessageFederate mFed)
delete

delete copy assignment

◆ operator=() [2/2]

MessageFederate & helics::MessageFederate::operator= ( MessageFederate &&  mFed)
noexcept

move assignment

References helics::Federate::operator=().

◆ pendingMessageCount() [1/2]

uint64_t helics::MessageFederate::pendingMessageCount ( ) const

Returns the number of pending receives for all endpoints.

References helics::Federate::currentMode, and helics::Federate::INITIALIZING.

◆ pendingMessageCount() [2/2]

uint64_t helics::MessageFederate::pendingMessageCount ( const Endpoint ept) const

Returns the number of pending receives for the specified destination endpoint.

References helics::Federate::currentMode, and helics::Federate::INITIALIZING.

◆ registerDataSink()

Endpoint & helics::MessageFederate::registerDataSink ( std::string_view  sinkName = std::string_view())

register a dataSink

Parameters
sinkNamethe name of the endpoint
Returns
the data sink will function identically to an endpoint except it only receives

◆ registerEndpoint()

Endpoint & helics::MessageFederate::registerEndpoint ( std::string_view  eptName = std::string_view(),
std::string_view  type = std::string_view() 
)

register an endpoint

Parameters
eptNamethe name of the endpoint
typethe defined type of the interface for endpoint checking if requested

References helics::Federate::localNameGenerator().

Referenced by helics::Endpoint::Endpoint().

◆ registerGlobalEndpoint()

Endpoint & helics::MessageFederate::registerGlobalEndpoint ( std::string_view  eptName,
std::string_view  type = std::string_view() 
)

register an endpoint directly without prepending the federate name

Parameters
eptNamethe name of the endpoint
typethe defined type of the interface for endpoint checking if requested
Returns
a Reference to an Endpoint Object

Referenced by helics::Endpoint::Endpoint().

◆ registerGlobalTargetedEndpoint()

Endpoint & helics::MessageFederate::registerGlobalTargetedEndpoint ( std::string_view  eptName,
std::string_view  type = std::string_view() 
)

register a targeted endpoint directly without prepending the federate name

Parameters
eptNamethe name of the endpoint
typethe defined type of the interface for endpoint checking if requested
Returns
a Reference to an Endpoint Object

◆ registerIndexedEndpoint()

Endpoint& helics::MessageFederate::registerIndexedEndpoint ( std::string_view  eptName,
int  index1,
std::string_view  type = std::string_view() 
)
inline

register an indexed Endpoint

register a global endpoint as part of a 1D array of endpoints

Parameters
eptNamethe name of the endpoint array
index1the index into a 1 dimensional array of endpoints
typethe optional type on the endpoint

◆ registerInterfaces()

void helics::MessageFederate::registerInterfaces ( const std::string &  configString)
overridevirtual

register a set of interfaces defined in a file

call is only valid in startup mode

Parameters
configStringthe location of the file or config String to load to generate the interfaces

Reimplemented from helics::Federate.

Reimplemented in helics::CombinationFederate.

References helics::Federate::registerConnectorInterfaces(), and registerMessageInterfaces().

◆ registerMessageInterfaces()

void helics::MessageFederate::registerMessageInterfaces ( const std::string &  configString)

register a set Message interfaces

call is only valid in startup mode it is a protected call to add an

Parameters
configStringthe location of the file(TOML or JSON) or JSON String to load to generate the interfaces

Referenced by helics::CombinationFederate::registerInterfaces(), and registerInterfaces().

◆ registerTargetedEndpoint()

Endpoint & helics::MessageFederate::registerTargetedEndpoint ( std::string_view  eptName = std::string_view(),
std::string_view  type = std::string_view() 
)

register a targeted endpoint

this type of endpoint can can send messages to predefined targets

Parameters
eptNamethe name of the endpoint
typethe defined type of the interface for endpoint checking if requested

References helics::Federate::localNameGenerator().

◆ setMessageNotificationCallback() [1/2]

void helics::MessageFederate::setMessageNotificationCallback ( const Endpoint ept,
const std::function< void(Endpoint &, Time)> &  callback 
)

register a callback for a specific endpoint

Parameters
eptthe endpoint to associate with the specified callback
callbackthe function to execute upon receipt of a message for the given endpoint

◆ setMessageNotificationCallback() [2/2]

void helics::MessageFederate::setMessageNotificationCallback ( const std::function< void(Endpoint &, Time)> &  callback)

register a callback for all endpoints

Parameters
callbackthe function to execute upon receipt of a message for any endpoint

◆ startupToInitializeStateTransition()

void helics::MessageFederate::startupToInitializeStateTransition ( )
overrideprotectedvirtual

function to deal with any operations that need to occur on the transition from startup to initialize

Reimplemented from helics::Federate.

Reimplemented in helics::CombinationFederate.

Referenced by helics::CombinationFederate::startupToInitializeStateTransition().

◆ subscribe()

void helics::MessageFederate::subscribe ( const Endpoint ept,
std::string_view  key 
)

subscribe to valueFederate publication to be delivered as Messages to the given endpoint

Parameters
eptthe specified endpoint to deliver the values
keythe name of the publication to subscribe

References helics::Federate::coreObject.

◆ updateTime()

void helics::MessageFederate::updateTime ( Time  newTime,
Time  oldTime 
)
overrideprotectedvirtual

function to deal with any operations that need to occur on a time update

Reimplemented from helics::Federate.

Reimplemented in helics::CombinationFederate.

Referenced by helics::CombinationFederate::updateTime().


The documentation for this class was generated from the following files: