helics  3.0.1
Public Member Functions | Protected Member Functions | List of all members
helics::ValueFederate Class Reference

#include <ValueFederate.hpp>

+ Inheritance diagram for helics::ValueFederate:

Public Member Functions

 ValueFederate (const std::string &fedName, const FederateInfo &fi)
 
 ValueFederate (const std::string &fedName, const std::shared_ptr< Core > &core, const FederateInfo &fi=FederateInfo{})
 
 ValueFederate (const std::string &fedName, CoreApp &core, const FederateInfo &fi=FederateInfo{})
 
 ValueFederate (const std::string &configString)
 
 ValueFederate (const std::string &fedName, const std::string &configString)
 
 ValueFederate ()
 
 ValueFederate (bool res)
 
 ValueFederate (const char *configString)
 
 ValueFederate (const ValueFederate &fed)=delete
 
 ValueFederate (ValueFederate &&fed) noexcept
 
virtual ~ValueFederate ()
 
ValueFederateoperator= (ValueFederate &&fed) noexcept
 
ValueFederateoperator= (const ValueFederate &fed)=delete
 
PublicationregisterPublication (const std::string &name, const std::string &type, const std::string &units=std::string())
 
template<typename X >
PublicationregisterPublication (const std::string &name, const std::string &units=std::string())
 
PublicationregisterGlobalPublication (const std::string &name, const std::string &type, const std::string &units=std::string())
 
template<typename X >
PublicationregisterGlobalPublication (const std::string &name, const std::string &units=std::string())
 
template<typename X >
PublicationregisterIndexedPublication (const std::string &name, int index1, const std::string &units=std::string())
 
template<typename X >
PublicationregisterIndexedPublication (const std::string &name, int index1, int index2, const std::string &units=std::string())
 
InputregisterInput (const std::string &name, const std::string &type, const std::string &units=std::string())
 
InputregisterGlobalInput (const std::string &name, const std::string &type, const std::string &units=std::string())
 
template<typename X >
InputregisterInput (const std::string &name, const std::string &units=std::string())
 
template<typename X >
InputregisterGlobalInput (const std::string &name, const std::string &units=std::string())
 
template<typename X >
InputregisterIndexedInput (const std::string &name, int index1, const std::string &units=std::string())
 
template<typename X >
InputregisterIndexedInput (const std::string &name, int index1, int index2, const std::string &units=std::string())
 
InputregisterSubscription (const std::string &target, const std::string &units=std::string())
 
InputregisterIndexedSubscription (const std::string &target, int index1, const std::string &units=std::string())
 
InputregisterIndexedSubscription (const std::string &target, int index1, int index2, const std::string &units=std::string())
 
void addAlias (const Input &inp, const std::string &shortcutName)
 
void addAlias (const Publication &pub, const std::string &shortcutName)
 
virtual void setFlagOption (int flag, bool flagValue=true) override
 
void setDefaultValue (const Input &inp, data_view block)
 
virtual void registerInterfaces (const std::string &configString) override
 
void registerValueInterfaces (const std::string &configString)
 
data_view getBytes (const Input &inp)
 
bool forceCoreUpdate (Input &inp)
 
void publishBytes (const Publication &pub, data_view block)
 
void publishBytes (const Publication &pub, const char *data, size_t data_size)
 
void registerFromPublicationJSON (const std::string &jsonString)
 
void publishJSON (const std::string &jsonString)
 
void addTarget (const Publication &pub, const std::string &target)
 
void addTarget (const Input &inp, const std::string &target)
 
void removeTarget (const Publication &pub, const std::string &target)
 
void removeTarget (const Input &inp, const std::string &target)
 
template<class iType >
void addIndexedTarget (const iType &iObject, const std::string &target, int index1)
 
template<class iType >
void addIndexedTarget (const iType &iObject, const std::string &target, int index1, int index2)
 
bool isUpdated (const Input &inp) const
 
Time getLastUpdateTime (const Input &inp) const
 
virtual void disconnect () override
 
void clearUpdates ()
 
void clearUpdate (const Input &inp)
 
std::vector< int > queryUpdates ()
 
const std::string & getTarget (const Input &inp) const
 
const InputgetInput (const std::string &name) const
 
InputgetInput (const std::string &name)
 
const InputgetInput (int index) const
 
InputgetInput (int index)
 
const InputgetInput (const std::string &name, int index1) const
 
const InputgetInput (const std::string &name, int index1, int index2) const
 
const InputgetSubscription (const std::string &target) const
 
InputgetSubscription (const std::string &target)
 
PublicationgetPublication (const std::string &name)
 
const PublicationgetPublication (const std::string &name) const
 
PublicationgetPublication (int index)
 
const PublicationgetPublication (int index) const
 
const PublicationgetPublication (const std::string &name, int index1) const
 
const PublicationgetPublication (const std::string &name, int index1, int index2) const
 
void setInputNotificationCallback (std::function< void(Input &, Time)> callback)
 
void setInputNotificationCallback (Input &inp, std::function< void(Input &, Time)> callback)
 
int getPublicationCount () const
 
int getInputCount () const
 
- Public Member Functions inherited from helics::Federate
 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 ()
 
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 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)
 
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)
 
FilterregisterGlobalFilter (const std::string &filterName, const std::string &inputType=std::string(), const std::string &outputType=std::string())
 
CloningFilterregisterGlobalCloningFilter (const std::string &filterName, const std::string &inputType=std::string(), const std::string &outputType=std::string())
 
FilterregisterFilter (const std::string &filterName, const std::string &inputType=std::string(), const std::string &outputType=std::string())
 
CloningFilterregisterCloningFilter (const std::string &filterName, const std::string &inputType=std::string(), const std::string &outputType=std::string())
 
FilterregisterFilter ()
 
CloningFilterregisterCloningFilter ()
 
const FiltergetFilter (const std::string &filterName) const
 
const FiltergetFilter (int index) const
 
FiltergetFilter (const std::string &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
 
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 updateTime (Time newTime, Time oldTime) override
 
virtual void startupToInitializeStateTransition () override
 
virtual void initializeToExecuteStateTransition (IterationResult result) override
 
virtual std::string localQuery (const std::string &queryStr) const override
 
- Protected Member Functions inherited from helics::Federate
virtual void disconnectTransition ()
 

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 value based interface

Constructor & Destructor Documentation

◆ ValueFederate() [1/10]

helics::ValueFederate::ValueFederate ( const std::string &  fedName,
const FederateInfo fi 
)

constructor taking a federate information structure and using the default core

Parameters
fedNamethe name of the federate, can be empty to use the name from fi or an auto generated one
fia federate information structure

constructor taking a core engine and federate info structure

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

◆ ValueFederate() [2/10]

helics::ValueFederate::ValueFederate ( 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

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

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

◆ ValueFederate() [3/10]

helics::ValueFederate::ValueFederate ( const std::string &  fedName,
CoreApp core,
const FederateInfo fi = FederateInfo{} 
)

constructor taking a CoreApp and a federate information structure

Parameters
fedNamethe name of the federate can be empty to use a name from the federateInfo
corea CoreApp with the core to connect to.
fia federate information structure

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

◆ ValueFederate() [4/10]

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

constructor taking a string with the required information

Parameters
configStringcan be either a JSON file a TOML file (with extension TOML) or a string containing JSON code

◆ ValueFederate() [5/10]

helics::ValueFederate::ValueFederate ( const std::string &  fedName,
const std::string &  configString 
)

constructor taking a name and a string with the required information

Parameters
fedNamethe name of the federate, can be empty to use the name from the configString
configStringcan be either a JSON file a TOML file (with extension TOML) or a string containing JSON code or a string with command line arguments

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

◆ ValueFederate() [6/10]

helics::ValueFederate::ValueFederate ( )
explicitdefault

default constructor

◆ ValueFederate() [7/10]

helics::ValueFederate::ValueFederate ( bool  res)
explicit

special constructor called by child class to initialize the class vs the default constructor

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

◆ ValueFederate() [8/10]

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

this is an overload for the string operation top deconflict with the bool version

◆ ValueFederate() [9/10]

helics::ValueFederate::ValueFederate ( const ValueFederate fed)
delete

federate is not copyable

◆ ValueFederate() [10/10]

helics::ValueFederate::ValueFederate ( ValueFederate &&  fed)
defaultnoexcept

default move constructor

◆ ~ValueFederate()

helics::ValueFederate::~ValueFederate ( )
virtualdefault

destructor

Member Function Documentation

◆ addAlias() [1/2]

void helics::ValueFederate::addAlias ( const Input inp,
const std::string &  shortcutName 
)

add a shortcut for locating an input

primarily for use in looking up an id from a different location creates a local shortcut for referring to a input which may not have another name

Parameters
inpthe input object
shortcutNamethe name of the shortcut

◆ addAlias() [2/2]

void helics::ValueFederate::addAlias ( const Publication pub,
const std::string &  shortcutName 
)

add a shortcut for locating a publication

primarily for use in looking up an id from a different location creates a local shortcut for referring to a publication which may not have another name

Parameters
pubthe publication object
shortcutNamethe name of the shortcut

◆ addIndexedTarget() [1/2]

template<class iType >
void helics::ValueFederate::addIndexedTarget ( const iType &  iObject,
const std::string &  target,
int  index1 
)
inline

add a 1-d Indexed target to an interface

call is only valid in startup mode, register an optional subscription for a 1D array of values

Parameters
iObjectan interface object to add the target to
targetthe name of the target
index1the index into a 1 dimensional array of values

◆ addIndexedTarget() [2/2]

template<class iType >
void helics::ValueFederate::addIndexedTarget ( const iType &  iObject,
const std::string &  target,
int  index1,
int  index2 
)
inline

add an indexed target to an interface

call is only valid in startup mode

Parameters
iObjectan interface object such as a publication, filter or input
targetthe name of the target
index1the first index of a 2-D value structure
index2the 2nd index of a 2-D value structure

◆ addTarget() [1/2]

void helics::ValueFederate::addTarget ( const Input inp,
const std::string &  target 
)

add a source target to an input/subscription

Parameters
inpthe input object to add a named publication
targetthe name of the publication to get data from

◆ addTarget() [2/2]

void helics::ValueFederate::addTarget ( const Publication pub,
const std::string &  target 
)

add a destination target to a publication

Parameters
pubthe publication object to add a target to
targetthe name of the input to send the data to

Referenced by helics::Input::addTarget().

◆ clearUpdate()

void helics::ValueFederate::clearUpdate ( const Input inp)

clear all the update for a specific federate

after this call isUpdated on the input will return false

Referenced by helics::Input::clearUpdate().

◆ clearUpdates()

void helics::ValueFederate::clearUpdates ( )

clear all the updates

after this call isUpdated on all the internal objects will return false

◆ disconnect()

void helics::ValueFederate::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().

◆ forceCoreUpdate()

bool helics::ValueFederate::forceCoreUpdate ( Input inp)

force an input to get Data From the Core

Parameters
inpan input object to get the data from
Returns
true if the value was registered as an update, which will be true in most cases
Exceptions
std::invalid_argumentif id is invalid

◆ getBytes()

data_view helics::ValueFederate::getBytes ( const Input inp)

get a value as raw data block from the system

Parameters
inpan input object to get the data from
Returns
a constant data block
Exceptions
std::invalid_argumentif id is invalid

Referenced by helics::Input::checkUpdate(), helics::Input::getByteCount(), and helics::Input::getBytes().

◆ getInput() [1/6]

Input & helics::ValueFederate::getInput ( const std::string &  name)

get the id of an input

Returns
an invalid input object if the target is valid otherwise a reference to the corresponding input

References helics::Federate::getName(), and helics::Federate::nameSegmentSeparator.

◆ getInput() [2/6]

const Input & helics::ValueFederate::getInput ( const std::string &  name) const

get the id of a subscription

Returns
an invalid input object if the name is invalid otherwise a reference to the corresponding input

References helics::Federate::getName(), and helics::Federate::nameSegmentSeparator.

Referenced by helics::getValue().

◆ getInput() [3/6]

const Input & helics::ValueFederate::getInput ( const std::string &  name,
int  index1 
) const

get an indexed input object using the name and index

Returns
an invalid input object if the target is valid otherwise a reference to the corresponding input

◆ getInput() [4/6]

const Input & helics::ValueFederate::getInput ( const std::string &  name,
int  index1,
int  index2 
) const

get an input object from a 2-d vector of inputs

Returns
an invalid input object if the target is valid otherwise a reference to the corresponding input

◆ getInput() [5/6]

Input & helics::ValueFederate::getInput ( int  index)

get an input object by index

Returns
an invalid input object if the target is invalid otherwise a reference to the corresponding input

◆ getInput() [6/6]

const Input & helics::ValueFederate::getInput ( int  index) const

get an input by index

Returns
an invalid input object if the index is invalid otherwise a reference to the corresponding input

◆ getInputCount()

int helics::ValueFederate::getInputCount ( ) const

get a count of the number subscriptions registered

◆ getLastUpdateTime()

Time helics::ValueFederate::getLastUpdateTime ( const Input inp) const

get the time of the last update

Referenced by helics::Input::getLastUpdate().

◆ getPublication() [1/6]

Publication & helics::ValueFederate::getPublication ( const std::string &  name)

get a publication from its name

Parameters
namethe name of the publication
Returns
an invalid publication if the index is valid otherwise a reference to the corresponding publication

References helics::Federate::getName(), and helics::Federate::nameSegmentSeparator.

Referenced by helics::Publication::Publication(), helics::publish(), and publishJSON().

◆ getPublication() [2/6]

const Publication & helics::ValueFederate::getPublication ( const std::string &  name) const

get a publication from its name

Parameters
namethe name of the publication
Returns
an invalid publication if the index is valid otherwise a reference to the corresponding publication

References helics::Federate::getName(), and helics::Federate::nameSegmentSeparator.

◆ getPublication() [3/6]

const Publication & helics::ValueFederate::getPublication ( const std::string &  name,
int  index1 
) const

get a publication from its name

Parameters
namethe name of the publication
index1the index into a vector of publications
Returns
an invalid publication if the index is valid otherwise the corresponding publication

◆ getPublication() [4/6]

const Publication & helics::ValueFederate::getPublication ( const std::string &  name,
int  index1,
int  index2 
) const

get a publication from a 2-d array of publications

Parameters
namethe name of the publication
index1the first index of 2d array
index2the second index of a 2d array of publications
Returns
an invalid publication if the index is valid otherwise the corresponding publication

◆ getPublication() [5/6]

Publication & helics::ValueFederate::getPublication ( int  index)

get a publication from its index

Parameters
indexthe 0 based index of the publication to retrieve
Returns
an invalid publication if the index is valid otherwise a reference to the corresponding publication

◆ getPublication() [6/6]

const Publication & helics::ValueFederate::getPublication ( int  index) const

get a publication from its index

Parameters
indexthe 0 based index of the publication to retrieve
Returns
an invalid publication if the index is valid otherwise the corresponding publication

◆ getPublicationCount()

int helics::ValueFederate::getPublicationCount ( ) const

get a count of the number publications registered

◆ getSubscription() [1/2]

Input & helics::ValueFederate::getSubscription ( const std::string &  target)

get an input based on target

this will only get the first subscription with a specific target

Returns
an invalid input object if the target is valid otherwise a reference to the corresponding input

◆ getSubscription() [2/2]

const Input & helics::ValueFederate::getSubscription ( const std::string &  target) const

get the input id based on target

Returns
an invalid input object if the target is valid otherwise a reference to the corresponding input

Referenced by helics::getValue().

◆ getTarget()

const std::string & helics::ValueFederate::getTarget ( const Input inp) const

get the name of the first target for an input

Returns
empty string if an invalid input is passed or it has no target

◆ initializeToExecuteStateTransition()

void helics::ValueFederate::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().

◆ isUpdated()

bool helics::ValueFederate::isUpdated ( const Input inp) const

check if a given subscription has an update

Returns
true if the subscription id is valid and has an update

Referenced by helics::Input::checkUpdate().

◆ localQuery()

std::string helics::ValueFederate::localQuery ( const std::string &  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]

ValueFederate& helics::ValueFederate::operator= ( const ValueFederate fed)
delete

delete copy assignment

◆ operator=() [2/2]

ValueFederate & helics::ValueFederate::operator= ( ValueFederate &&  fed)
noexcept

default move assignment

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

◆ publishBytes() [1/2]

void helics::ValueFederate::publishBytes ( const Publication pub,
const char *  data,
size_t  data_size 
)
inline

publish data

Parameters
pubthe publication identifier
dataa const char pointer to raw data
data_sizethe length of the data
Exceptions
invalid_argumentif the publication id is invalid

◆ publishBytes() [2/2]

void helics::ValueFederate::publishBytes ( const Publication pub,
data_view  block 
)

publish a value

Parameters
pubthe publication identifier
blocka data block containing the data
Exceptions
invalid_argumentif the publication id is invalid

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

Referenced by helics::Publication::publish(), and helics::Publication::publishComplex().

◆ publishJSON()

void helics::ValueFederate::publishJSON ( const std::string &  jsonString)

publish a set of values in json format

Parameters
jsonStringa json string containing the data to publish

References getPublication(), and helics::Federate::nameSegmentSeparator.

◆ queryUpdates()

std::vector< int > helics::ValueFederate::queryUpdates ( )

get a list of all the indices of all inputs that have been updated since the last call

Returns
a vector of input indices with all the values that have not been retrieved since updated

◆ registerFromPublicationJSON()

void helics::ValueFederate::registerFromPublicationJSON ( const std::string &  jsonString)

register a set of publications based on a publication JSON

Parameters
jsonStringa json string containing the data to publish and establish publications from

References helics::Federate::nameSegmentSeparator.

◆ registerGlobalInput() [1/2]

Input & helics::ValueFederate::registerGlobalInput ( const std::string &  name,
const std::string &  type,
const std::string &  units = std::string() 
)

register a globally named input

call is only valid in startup mode

Parameters
namethe name of the input(can be blank in which case it is the same as a subscription
typea string defining the type of the input
unitsa string defining the units of the input [optional]
Returns
a input id object for use as an identifier

◆ registerGlobalInput() [2/2]

template<typename X >
Input& helics::ValueFederate::registerGlobalInput ( const std::string &  name,
const std::string &  units = std::string() 
)
inline

register a global named input

◆ registerGlobalPublication() [1/2]

Publication & helics::ValueFederate::registerGlobalPublication ( const std::string &  name,
const std::string &  type,
const std::string &  units = std::string() 
)

register a publication

call is only valid in startup mode

Parameters
namethe name of the publication
typea string defining the type of the publication
unitsa string defining the units of the publication [optional]
Returns
a publication object reference for use as an identifier

◆ registerGlobalPublication() [2/2]

template<typename X >
Publication& helics::ValueFederate::registerGlobalPublication ( const std::string &  name,
const std::string &  units = std::string() 
)
inline

register a publication

call is only valid in startup mode by default prepends the name with the federate name

Parameters
namethe name of the publication
unitsthe optional units of the publication
Returns
an identifier for use with this publication

◆ registerIndexedInput() [1/2]

template<typename X >
Input& helics::ValueFederate::registerIndexedInput ( const std::string &  name,
int  index1,
const std::string &  units = std::string() 
)
inline

register a required subscription

call is only valid in startup mode, register an optional subscription for a 1D array of values

Parameters
namethe name of the subscription
index1the index into a 1 dimensional array of values
unitsthe optional units on the subscription

◆ registerIndexedInput() [2/2]

template<typename X >
Input& helics::ValueFederate::registerIndexedInput ( const std::string &  name,
int  index1,
int  index2,
const std::string &  units = std::string() 
)
inline

register a publication as part of a 2 dimensional indexed structure

call is only valid in startup mode by default prepends the name with the federate name the name is registered as a global structure with the indices appended

Parameters
namethe name of the publication
index1an index associated with the publication
index2a second index
unitsthe optional units of the publication
Returns
an identifier for use with this publication

◆ registerIndexedPublication() [1/2]

template<typename X >
Publication& helics::ValueFederate::registerIndexedPublication ( const std::string &  name,
int  index1,
const std::string &  units = std::string() 
)
inline

register a publication as part of an indexed structure

call is only valid in startup mode by default prepends the name with the federate name the name is registered as a global structure with the index appended

Parameters
namethe name of the publication
index1an index associated with the publication
unitsthe optional units of the publication
Returns
an identifier for use with this publication

◆ registerIndexedPublication() [2/2]

template<typename X >
Publication& helics::ValueFederate::registerIndexedPublication ( const std::string &  name,
int  index1,
int  index2,
const std::string &  units = std::string() 
)
inline

register a publication as part of a 2 dimensional indexed structure

call is only valid in startup mode by default prepends the name with the federate name the name is registered as a global structure with the indices appended

Parameters
namethe name of the publication
index1an index associated with the publication
index2a second index
unitsthe optional units of the publication
Returns
an identifier for use with this publication

◆ registerIndexedSubscription() [1/2]

Input& helics::ValueFederate::registerIndexedSubscription ( const std::string &  target,
int  index1,
const std::string &  units = std::string() 
)
inline

register a subscription

register a subscription for a 1D array of values

Parameters
targetthe name of the publication to target
index1the index into a 1 dimensional array of values
unitsthe optional units on the subscription

Referenced by helics::VectorSubscription< X >::VectorSubscription(), and helics::VectorSubscription2d< X >::VectorSubscription2d().

◆ registerIndexedSubscription() [2/2]

Input& helics::ValueFederate::registerIndexedSubscription ( const std::string &  target,
int  index1,
int  index2,
const std::string &  units = std::string() 
)
inline

register a subscription for an index of a 2-D array of values

call is only valid in startup mode

Parameters
targetthe name of the publication to subscribe to
index1the first index of a 2-D value structure
index2the 2nd index of a 2-D value structure
unitsthe optional units on the subscription

◆ registerInput() [1/2]

Input & helics::ValueFederate::registerInput ( const std::string &  name,
const std::string &  type,
const std::string &  units = std::string() 
)

register an input

call is only valid in startup mode register a subscription with name type and units

Parameters
namethe name of the publication to subscribe to
typea string describing the type of the publication
unitsa string describing the units on the publication

References helics::Federate::getName(), and helics::Federate::nameSegmentSeparator.

◆ registerInput() [2/2]

template<typename X >
Input& helics::ValueFederate::registerInput ( const std::string &  name,
const std::string &  units = std::string() 
)
inline

register a named input

◆ registerInterfaces()

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

register a set of interfaces defined in a file

call is only valid in startup mode to add an TOML files must have extension .toml or .TOML

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

Reimplemented from helics::Federate.

Reimplemented in helics::CombinationFederate.

References helics::Federate::registerInterfaces(), and registerValueInterfaces().

Referenced by ValueFederate().

◆ registerPublication() [1/2]

Publication & helics::ValueFederate::registerPublication ( const std::string &  name,
const std::string &  type,
const std::string &  units = std::string() 
)

register a publication

call is only valid in startup mode

Parameters
namethe name of the publication
typea string defining the type of the publication
unitsa string defining the units of the publication [optional]
Returns
a publication id object for use as an identifier

References helics::Federate::getName(), and helics::Federate::nameSegmentSeparator.

Referenced by helics::Publication::Publication().

◆ registerPublication() [2/2]

template<typename X >
Publication& helics::ValueFederate::registerPublication ( const std::string &  name,
const std::string &  units = std::string() 
)
inline

register a publication

call is only valid in startup mode by default prepends the name with the federate name

Parameters
namethe name of the publication
unitsthe optional units of the publication
Returns
an identifier for use with this publication

◆ registerSubscription()

Input & helics::ValueFederate::registerSubscription ( const std::string &  target,
const std::string &  units = std::string() 
)

register a subscription

Parameters
targetthe name of the publication to subscribe to
unitsthe units associated with the desired output

◆ registerValueInterfaces()

void helics::ValueFederate::registerValueInterfaces ( const std::string &  configString)

register a set of value interfaces (publications and subscriptions)

call is only valid in startup mode it is a protected call to add an TOML files must have extension .toml or .TOML

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

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

◆ removeTarget() [1/2]

void helics::ValueFederate::removeTarget ( const Input inp,
const std::string &  target 
)

remove a publication from an input/subscription

Parameters
inpthe input object to add a named publication
targetthe name of the publication to remove

◆ removeTarget() [2/2]

void helics::ValueFederate::removeTarget ( const Publication pub,
const std::string &  target 
)

remove a destination target from a publication

Parameters
pubthe publication object to add a target to
targetthe name of the input to remove

◆ setDefaultValue()

void helics::ValueFederate::setDefaultValue ( const Input inp,
data_view  block 
)

set the default value for a subscription

this is the value returned prior to any publications

Parameters
inpthe subscription identifier
blockthe data view representing the default value
Exceptions
std::invalid_argumentif id is invalid

◆ setFlagOption()

void helics::ValueFederate::setFlagOption ( int  flag,
bool  flagValue = true 
)
overridevirtual

set a flag for the federate

Parameters
flagan index into the flag /ref flag-definitions.h
flagValuethe value of the flag defaults to true

Reimplemented from helics::Federate.

Reimplemented in helics::CombinationFederate.

References HELICS_FLAG_USE_JSON_SERIALIZATION, helics::Federate::setFlagOption(), and helics::Federate::useJsonSerialization.

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

◆ setInputNotificationCallback() [1/2]

void helics::ValueFederate::setInputNotificationCallback ( Input inp,
std::function< void(Input &, Time)>  callback 
)

register a callback function to call when the specified subscription is updated

Parameters
inpan input to set the notification callback for
callbackthe function to call

◆ setInputNotificationCallback() [2/2]

void helics::ValueFederate::setInputNotificationCallback ( std::function< void(Input &, Time)>  callback)

register a callback function to call when any subscribed value is updated

there can only be one generic callback

Parameters
callbackthe function to call signature void(Input &, Time)

Referenced by helics::VectorSubscription< X >::operator=(), helics::VectorSubscription2d< X >::operator=(), helics::Input::registerNotificationCallback(), helics::VectorSubscription< X >::VectorSubscription(), and helics::VectorSubscription2d< X >::VectorSubscription2d().

◆ startupToInitializeStateTransition()

void helics::ValueFederate::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().

◆ updateTime()

void helics::ValueFederate::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: