helics  3.3.0
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 &fi)
 
 MessageFederate (std::string_view fedName, const std::shared_ptr< Core > &core, const FederateInfo &fi=FederateInfo{})
 
 MessageFederate (std::string_view fedName, CoreApp &core, const FederateInfo &fi=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())
 
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
 
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 &fi)
 
 Federate (std::string_view fedname, const std::shared_ptr< Core > &core, const FederateInfo &fi=FederateInfo{})
 
 Federate (std::string_view fedname, CoreApp &core, const FederateInfo &fi=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 ()
 
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
 
void setProperty (int32_t option, double timeValue)
 
void setProperty (int32_t option, Time timeValue)
 
virtual void setFlagOption (int flag, bool flagValue=true)
 
void setProperty (int32_t option, int32_t optionValue)
 
Time getTimeProperty (int32_t option) const
 
virtual bool getFlagOption (int flag) const
 
int getIntegerProperty (int32_t option) const
 
void setLoggingCallback (const std::function< void(int, std::string_view, std::string_view)> &logFunction)
 
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)
 
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 > op)
 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 > op)
 register an operator for the specified translator More...
 
int getTranslatorCount () const
 
void registerFilterInterfaces (const std::string &configString)
 
auto getID () const noexcept
 
Modes getCurrentMode () const noexcept
 
Time getCurrentTime () const
 
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 (IterationResult 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
virtual void disconnectTransition ()
 
std::string localNameGenerator (std::string_view addition) const
 

Additional Inherited Members

- Public Types inherited from helics::Federate
enum  Modes : char {
  Modes::STARTUP = 0, Modes::INITIALIZING = 1, Modes::EXECUTING = 2, Modes::FINALIZE = 3,
  Modes::ERROR_STATE = 4, Modes::PENDING_INIT = 5, Modes::PENDING_EXEC = 6, Modes::PENDING_TIME = 7,
  Modes::PENDING_ITERATIVE_TIME = 8, Modes::PENDING_FINALIZE = 9, Modes::FINISHED = 10
}
 
- 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}
 
std::shared_ptr< CorecoreObject
 reference to the core simulation API
 
Time currentTime = Time::minVal()
 the current simulation time
 

Detailed Description

class defining the block communication based interface

Constructor & Destructor Documentation

◆ MessageFederate() [1/10]

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

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 fi
fia federate information structure

References helics::Federate::coreObject, and helics::Federate::getID().

◆ MessageFederate() [2/10]

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

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

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

References helics::Federate::coreObject, and helics::Federate::getID().

◆ MessageFederate() [3/10]

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

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

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

References helics::Federate::coreObject, and helics::Federate::getID().

◆ 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

References helics::Federate::coreObject, helics::Federate::getID(), and registerInterfaces().

◆ 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

References helics::Federate::coreObject, and helics::Federate::getID().

◆ ~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().

◆ 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 by its name

Parameters
namethe Endpoint
Returns
an Endpoint

References 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.

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

◆ hasMessage()

bool helics::MessageFederate::hasMessage ( ) const

check if the federate has any outstanding messages

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

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

◆ initializeToExecuteStateTransition()

void helics::MessageFederate::initializeToExecuteStateTransition ( IterationResult  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.

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

◆ registerEndpoint()

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

register an endpoint

call is only valid in startup mode

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

References helics::Federate::localNameGenerator().

◆ 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

call is only valid in startup mode

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

◆ 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::registerFilterInterfaces(), and registerMessageInterfaces().

Referenced by MessageFederate().

◆ 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

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

◆ 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: