![]() |
helics
3.0.1
|
#include <MessageFederate.hpp>
Public Member Functions | |
MessageFederate (const std::string &fedName, const FederateInfo &fi) | |
MessageFederate (const std::string &fedName, const std::shared_ptr< Core > &core, const FederateInfo &fi=FederateInfo{}) | |
MessageFederate (const std::string &fedName, CoreApp &core, const FederateInfo &fi=FederateInfo{}) | |
MessageFederate (const std::string &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 () |
MessageFederate & | operator= (MessageFederate &&mFed) noexcept |
MessageFederate & | operator= (const MessageFederate &mFed)=delete |
Endpoint & | registerEndpoint (const std::string &eptName=std::string(), const std::string &type=std::string()) |
Endpoint & | registerTargetedEndpoint (const std::string &eptName=std::string(), const std::string &type=std::string()) |
Endpoint & | registerGlobalEndpoint (const std::string &eptName, const std::string &type=std::string()) |
Endpoint & | registerGlobalTargetedEndpoint (const std::string &eptName, const std::string &type=std::string()) |
Endpoint & | registerIndexedEndpoint (const std::string &eptName, int index1, const std::string &type=std::string()) |
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< Message > | getMessage (const Endpoint &ept) |
std::unique_ptr< Message > | getMessage () |
Endpoint & | getEndpoint (const std::string &name) const |
Endpoint & | getEndpoint (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 |
![]() | |
Federate (const std::string &fedname, const FederateInfo &fi) | |
Federate (const std::string &fedname, const std::shared_ptr< Core > &core, const FederateInfo &fi=FederateInfo{}) | |
Federate (const std::string &fedname, CoreApp &core, const FederateInfo &fi=FederateInfo{}) | |
Federate (const std::string &configString) | |
Federate (const std::string &fedname, const std::string &configString) | |
Federate () noexcept | |
Federate (Federate &&fed) noexcept | |
Federate (const Federate &fed)=delete | |
virtual | ~Federate () |
Federate & | operator= (Federate &&fed) noexcept |
Federate & | operator= (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 | localError (int errorcode, const std::string &message) |
void | globalError (int errorcode, const std::string &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 (const std::string &tag, const std::string &value) |
const std::string & | getTag (const std::string &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) |
std::string | query (const std::string &target, const std::string &queryStr, HelicsSequencingModes mode=HELICS_SEQUENCING_MODE_FAST) |
std::string | query (const std::string &queryStr, HelicsSequencingModes mode=HELICS_SEQUENCING_MODE_FAST) |
QueryId | queryAsync (const std::string &target, const std::string &queryStr, HelicsSequencingModes mode=HELICS_SEQUENCING_MODE_FAST) |
QueryId | queryAsync (const std::string &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 (const std::string &valueName, const std::string &value) |
void | sendCommand (const std::string &target, const std::string &commandStr, HelicsSequencingModes mode=HelicsSequencingModes::HELICS_SEQUENCING_MODE_FAST) |
std::pair< std::string, std::string > | getCommand () |
std::pair< std::string, std::string > | waitCommand () |
void | addDependency (const std::string &fedName) |
Filter & | registerGlobalFilter (const std::string &filterName, const std::string &inputType=std::string(), const std::string &outputType=std::string()) |
CloningFilter & | registerGlobalCloningFilter (const std::string &filterName, const std::string &inputType=std::string(), const std::string &outputType=std::string()) |
Filter & | registerFilter (const std::string &filterName, const std::string &inputType=std::string(), const std::string &outputType=std::string()) |
CloningFilter & | registerCloningFilter (const std::string &filterName, const std::string &inputType=std::string(), const std::string &outputType=std::string()) |
Filter & | registerFilter () |
CloningFilter & | registerCloningFilter () |
const Filter & | getFilter (const std::string &filterName) const |
const Filter & | getFilter (int index) const |
Filter & | getFilter (const std::string &filterName) |
Filter & | getFilter (int index) |
void | setFilterOperator (const Filter &filt, std::shared_ptr< FilterOperator > op) |
register a operator for the specified filter More... | |
int | getFilterCount () const |
void | registerFilterInterfaces (const std::string &configString) |
auto | getID () const noexcept |
Modes | getCurrentMode () const |
Time | getCurrentTime () const |
const std::string & | getName () const |
const std::shared_ptr< Core > & | getCorePointer () |
int | filterCount () const |
void | logMessage (int level, const std::string &message) const |
void | logErrorMessage (const std::string &message) const |
void | logWarningMessage (const std::string &message) const |
void | logInfoMessage (const std::string &message) const |
void | logDebugMessage (const std::string &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 (const std::string &queryStr) const override |
![]() | |
virtual void | disconnectTransition () |
Additional Inherited Members | |
![]() | |
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 } |
![]() | |
std::atomic< Modes > | currentMode {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< Core > | coreObject |
reference to the core simulation API | |
Time | currentTime = Time::minVal() |
the current simulation time | |
class defining the block communication based interface
helics::MessageFederate::MessageFederate | ( | const std::string & | fedName, |
const FederateInfo & | fi | ||
) |
constructor taking a federate information structure and using the default core
fedName | the name of the messageFederate, can be left empty to use a default or one from fi |
fi | a federate information structure |
References helics::Federate::coreObject, and helics::Federate::getID().
helics::MessageFederate::MessageFederate | ( | const std::string & | 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
fedName | the name of the messageFederate, can be left empty to use a default or one from fi |
core | a shared ptr to a core to join |
fi | a federate information structure |
References helics::Federate::coreObject, and helics::Federate::getID().
helics::MessageFederate::MessageFederate | ( | const std::string & | fedName, |
CoreApp & | core, | ||
const FederateInfo & | fi = FederateInfo{} |
||
) |
constructor taking a core and a federate information structure, core information in fi is ignored
fedName | the name of the messageFederate, can be left empty to use a default or one from fi |
core | a CoreApp object representing the core to connect to |
fi | a federate information structure |
References helics::Federate::coreObject, and helics::Federate::getID().
helics::MessageFederate::MessageFederate | ( | const std::string & | name, |
const std::string & | configString | ||
) |
constructor taking a string with the required information
name | the name of the federate, can be empty to get name from config |
configString | can be either a JSON file, TOML file or a string containing JSON code |
References helics::Federate::coreObject, helics::Federate::getID(), and registerInterfaces().
|
explicit |
constructor taking a string with the required information
configString | can 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 |
|
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
configString | can 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 |
|
defaultnoexcept |
move constructor
|
delete |
delete copy constructor
helics::MessageFederate::MessageFederate | ( | ) |
default constructor
|
explicit |
special constructor should only be used by child classes in constructor due to virtual inheritance
References helics::Federate::coreObject, and helics::Federate::getID().
|
virtualdefault |
destructor
|
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().
Endpoint & helics::MessageFederate::getEndpoint | ( | const std::string & | name | ) | const |
get an endpoint by its name
name | the Endpoint |
References helics::Federate::getName(), and helics::Federate::nameSegmentSeparator.
Endpoint & helics::MessageFederate::getEndpoint | ( | int | index | ) | const |
int helics::MessageFederate::getEndpointCount | ( | ) | const |
get the number of registered endpoints
get a count of the number endpoints registered
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
References helics::Federate::currentMode, and helics::Federate::INITIALIZING.
receive a packet from a particular endpoint
ept | the identifier for the endpoint |
References helics::Federate::currentMode, and helics::Federate::INITIALIZING.
Referenced by helics::Endpoint::getMessage().
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().
|
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().
|
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().
|
delete |
delete copy assignment
|
noexcept |
move assignment
References helics::Federate::operator=().
uint64_t helics::MessageFederate::pendingMessageCount | ( | ) | const |
Returns the number of pending receives for all endpoints.
References helics::Federate::currentMode, and helics::Federate::INITIALIZING.
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().
Endpoint & helics::MessageFederate::registerEndpoint | ( | const std::string & | eptName = std::string() , |
const std::string & | type = std::string() |
||
) |
register an endpoint
call is only valid in startup mode
eptName | the name of the endpoint |
type | the defined type of the interface for endpoint checking if requested |
References helics::Federate::getName(), and helics::Federate::nameSegmentSeparator.
Endpoint & helics::MessageFederate::registerGlobalEndpoint | ( | const std::string & | eptName, |
const std::string & | type = std::string() |
||
) |
register an endpoint directly without prepending the federate name
call is only valid in startup mode
eptName | the name of the endpoint |
type | the defined type of the interface for endpoint checking if requested |
Endpoint & helics::MessageFederate::registerGlobalTargetedEndpoint | ( | const std::string & | eptName, |
const std::string & | type = std::string() |
||
) |
register a targeted endpoint directly without prepending the federate name
eptName | the name of the endpoint |
type | the defined type of the interface for endpoint checking if requested |
|
inline |
register an indexed Endpoint
register a global endpoint as part of a 1D array of endpoints
eptName | the name of the endpoint array |
index1 | the index into a 1 dimensional array of endpoints |
type | the optional type on the endpoint |
|
overridevirtual |
register a set of interfaces defined in a file
call is only valid in startup mode
configString | the 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().
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
configString | the location of the file(TOML or JSON) or JSON String to load to generate the interfaces |
Referenced by helics::CombinationFederate::registerInterfaces(), and registerInterfaces().
Endpoint & helics::MessageFederate::registerTargetedEndpoint | ( | const std::string & | eptName = std::string() , |
const std::string & | type = std::string() |
||
) |
register a targeted endpoint
this type of endpoint can can send messages to predefined targets
eptName | the name of the endpoint |
type | the defined type of the interface for endpoint checking if requested |
References helics::Federate::getName(), and helics::Federate::nameSegmentSeparator.
void helics::MessageFederate::setMessageNotificationCallback | ( | const Endpoint & | ept, |
const std::function< void(Endpoint &, Time)> & | callback | ||
) |
register a callback for a specific endpoint
ept | the endpoint to associate with the specified callback |
callback | the function to execute upon receipt of a message for the given endpoint |
void helics::MessageFederate::setMessageNotificationCallback | ( | const std::function< void(Endpoint &, Time)> & | callback | ) |
register a callback for all endpoints
callback | the function to execute upon receipt of a message for any endpoint |
Referenced by helics::Endpoint::setCallback().
|
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().
void helics::MessageFederate::subscribe | ( | const Endpoint & | ept, |
std::string_view | key | ||
) |
subscribe to valueFederate publication to be delivered as Messages to the given endpoint
ept | the specified endpoint to deliver the values |
key | the name of the publication to subscribe |
References helics::Federate::coreObject.
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().