helics  2.8.1
Public Member Functions | Static 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 &key, const std::string &type, const std::string &units=std::string())
 
template<typename X >
PublicationregisterPublication (const std::string &key, const std::string &units=std::string())
 
PublicationregisterGlobalPublication (const std::string &key, const std::string &type, const std::string &units=std::string())
 
template<typename X >
PublicationregisterGlobalPublication (const std::string &key, const std::string &units=std::string())
 
template<typename X >
PublicationregisterIndexedPublication (const std::string &key, int index1, const std::string &units=std::string())
 
template<typename X >
PublicationregisterIndexedPublication (const std::string &key, int index1, int index2, const std::string &units=std::string())
 
template<typename X >
PublicationregisterPublicationIndexed (const std::string &key, int index1, const std::string &units=std::string())
 
template<typename X >
PublicationregisterPublicationIndexed (const std::string &key, int index1, int index2, const std::string &units=std::string())
 
InputregisterInput (const std::string &key, const std::string &type, const std::string &units=std::string())
 
InputregisterGlobalInput (const std::string &key, const std::string &type, const std::string &units=std::string())
 
template<typename X >
InputregisterInput (const std::string &key, const std::string &units=std::string())
 
template<typename X >
InputregisterGlobalInput (const std::string &key, const std::string &units=std::string())
 
template<typename X >
InputregisterIndexedInput (const std::string &key, int index1, const std::string &units=std::string())
 
template<typename X >
InputregisterIndexedInput (const std::string &key, int index1, int index2, const std::string &units=std::string())
 
template<typename X >
InputregisterInputIndexed (const std::string &key, int index1, const std::string &units=std::string())
 
template<typename X >
InputregisterInputIndexed (const std::string &key, 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())
 
InputregisterSubscriptionIndexed (const std::string &target, int index1, const std::string &units=std::string())
 
InputregisterSubscriptionIndexed (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 getValueRaw (const Input &inp)
 
void publishRaw (const Publication &pub, data_view block)
 
void publishRaw (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 &key) const
 
InputgetInput (const std::string &key)
 
const InputgetInput (int index) const
 
InputgetInput (int index)
 
const InputgetInput (const std::string &key, int index1) const
 
const InputgetInput (const std::string &key, int index1, int index2) const
 
const InputgetSubscription (const std::string &target) const
 
InputgetSubscription (const std::string &target)
 
PublicationgetPublication (const std::string &key)
 
const PublicationgetPublication (const std::string &key) const
 
PublicationgetPublication (int index)
 
const PublicationgetPublication (int index) const
 
const PublicationgetPublication (const std::string &key, int index1) const
 
const PublicationgetPublication (const std::string &key, 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 ()
 
iteration_result enterExecutingMode (iteration_request iterate=iteration_request::no_iterations)
 
void enterExecutingModeAsync (iteration_request iterate=iteration_request::no_iterations)
 
iteration_result enterExecutingModeComplete ()
 
void finalize ()
 
void finalizeAsync ()
 
void finalizeComplete ()
 
void error (int errorcode)
 
void error (int errorcode, const std::string &message)
 
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, iteration_request iterate)
 
void requestTimeAsync (Time nextInternalTimeStep)
 
void requestTimeIterativeAsync (Time nextInternalTimeStep, iteration_request iterate)
 
Time requestTimeComplete ()
 
iteration_time requestTimeIterativeComplete ()
 
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, const std::string &, const std::string &)> &logFunction)
 
std::string query (const std::string &target, const std::string &queryStr, helics_sequencing_mode mode=helics_sequencing_mode_fast)
 
std::string query (const std::string &queryStr, helics_sequencing_mode mode=helics_sequencing_mode_fast)
 
query_id_t queryAsync (const std::string &target, const std::string &queryStr, helics_sequencing_mode mode=helics_sequencing_mode_fast)
 
query_id_t queryAsync (const std::string &queryStr, helics_sequencing_mode mode=helics_sequencing_mode_fast)
 
std::string queryComplete (query_id_t queryIndex)
 
bool isQueryCompleted (query_id_t queryIndex) const
 
void setQueryCallback (const std::function< std::string(const std::string &)> &queryFunction)
 
void setGlobal (const std::string &valueName, const std::string &value)
 
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 ()
 
void addSourceTarget (const Filter &filt, const std::string &targetEndpoint)
 
void addDestinationTarget (const Filter &filt, const std::string &targetEndpoint)
 
const std::string & getInterfaceName (interface_handle handle) const
 
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)
 
void closeInterface (interface_handle handle)
 
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 setInfo (interface_handle handle, const std::string &info)
 
const std::string & getInfo (interface_handle handle)
 
void setInterfaceOption (interface_handle handle, int32_t option, int32_t option_value=1)
 
int32_t getInterfaceOption (interface_handle handle, int32_t option)
 
const std::string & getInjectionType (interface_handle handle) const
 
const std::string & getExtractionType (interface_handle handle) const
 
const std::string & getInjectionUnits (interface_handle handle) const
 
const std::string & getExtractionUnits (interface_handle handle) const
 
const std::string & getInterfaceUnits (interface_handle handle) 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 ()
 

Static Public Member Functions

static double getDouble (Input &inp)
 
static const std::string & getString (Input &inp)
 
static void publish (Publication &pub, const std::string &str)
 
static void publish (Publication &pub, double val)
 

Protected Member Functions

virtual void updateTime (Time newTime, Time oldTime) override
 
virtual void startupToInitializeStateTransition () override
 
virtual void initializeToExecuteStateTransition (iteration_result result) override
 
virtual std::string localQuery (const std::string &queryStr) const override
 

Additional Inherited Members

- Public Types inherited from helics::Federate
enum  modes : char {
  modes::startup = 0, modes::initializing = 1, modes::executing = 2, modes::finalize,
  modes::error = 4, modes::pending_init = 5, modes::pending_exec = 6, modes::pending_time = 7,
  modes::pending_iterative_time, 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}
 
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

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

◆ getDouble()

double helics::ValueFederate::getDouble ( Input inp)
static

get a double value

References helics::Input::getValue().

◆ getInput() [1/6]

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

get the id of a subscription

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 &  key) const

get the id of a subscription

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() [3/6]

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

get the id of a subscription from a vector of subscriptions

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 &  key,
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 the id of a subscription

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

◆ getInput() [6/6]

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

get the id of a subscription

Returns
an invalid input object if the target is valid 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

◆ getPublication() [1/6]

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

get a publication from its name

Parameters
keythe 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(), and publishJSON().

◆ getPublication() [2/6]

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

get a publication from its key

Parameters
keythe 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 &  key,
int  index1 
) const

get a publication from its name

Parameters
keythe 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 &  key,
int  index1,
int  index2 
) const

get a publication from a 2-d array of publications

Parameters
keythe 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

◆ getString()

const std::string & helics::ValueFederate::getString ( Input inp)
static

get a string value

◆ 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

◆ 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

◆ getValueRaw()

data_view helics::ValueFederate::getValueRaw ( 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::getRawSize(), and helics::Input::getRawValue().

◆ initializeToExecuteStateTransition()

void helics::ValueFederate::initializeToExecuteStateTransition ( iteration_result  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 fed, and helics::Federate::operator=().

◆ publish() [1/2]

void helics::ValueFederate::publish ( Publication pub,
const std::string &  str 
)
static

direct publish a string

Parameters
pubthe publication to use
stra string to publish
Exceptions
invalid_argumentif the publication id is invalid

References helics::Publication::publish().

◆ publish() [2/2]

void helics::ValueFederate::publish ( Publication pub,
double  val 
)
static

direct publish a double

Parameters
pubthe publication identifier
valthe value to publish
Exceptions
invalid_argumentif the publication is invalid

References helics::Publication::publish().

◆ 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(), loadJson(), and helics::Federate::nameSegmentSeparator.

◆ publishRaw() [1/2]

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

References data.

◆ publishRaw() [2/2]

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

◆ 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 loadJson(), and helics::Federate::nameSegmentSeparator.

◆ registerGlobalInput() [1/2]

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

register a globally named input

call is only valid in startup mode

Parameters
keythe 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 &  key,
const std::string &  units = std::string() 
)
inline

register a global named input

◆ registerGlobalPublication() [1/2]

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

register a publication

call is only valid in startup mode

Parameters
keythe 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 &  key,
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
keythe 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 &  key,
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
keythe 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 &  key,
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
keythe 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 &  key,
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
keythe 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 &  key,
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
keythe 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

◆ 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 &  key,
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
keythe 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 &  key,
const std::string &  units = std::string() 
)
inline

register a named input

◆ registerInputIndexed() [1/2]

template<typename X >
Input& helics::ValueFederate::registerInputIndexed ( const std::string &  key,
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
keythe name of the subscription
index1the index into a 1 dimensional array of values
unitsthe optional units on the subscription

◆ registerInputIndexed() [2/2]

template<typename X >
Input& helics::ValueFederate::registerInputIndexed ( const std::string &  key,
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
keythe 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

◆ 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 &  key,
const std::string &  type,
const std::string &  units = std::string() 
)

register a publication

call is only valid in startup mode

Parameters
keythe 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 &  key,
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
keythe name of the publication
unitsthe optional units of the publication
Returns
an identifier for use with this publication

◆ registerPublicationIndexed() [1/2]

template<typename X >
Publication& helics::ValueFederate::registerPublicationIndexed ( const std::string &  key,
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
keythe name of the publication
index1an index associated with the publication
unitsthe optional units of the publication
Returns
an identifier for use with this publication

◆ registerPublicationIndexed() [2/2]

template<typename X >
Publication& helics::ValueFederate::registerPublicationIndexed ( const std::string &  key,
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
keythe 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

◆ 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

Referenced by helics::make_subscription().

◆ registerSubscriptionIndexed() [1/2]

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

◆ registerSubscriptionIndexed() [2/2]

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

◆ 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_id_t, Time)

Referenced by helics::InputT< X >::setInputNotificationCallback().

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