helics  3.0.1
Public Member Functions | Protected Attributes | Friends | List of all members
helics::Publication Class Reference

#include <Publications.hpp>

+ Inheritance diagram for helics::Publication:

Public Member Functions

 Publication (ValueFederate *valueFed, InterfaceHandle id, const std::string &key, const std::string &type, const std::string &units)
 
 Publication (ValueFederate *valueFed, const std::string &key, const std::string &type, const std::string &units=std::string())
 
template<class FedPtr >
 Publication (FedPtr valueFed, const std::string &key, const std::string &type=std::string(), const std::string &units=std::string())
 
 Publication (InterfaceVisibility locality, ValueFederate *valueFed, const std::string &key, const std::string &type, const std::string &units=std::string())
 
template<class FedPtr >
 Publication (InterfaceVisibility locality, FedPtr &valueFed, const std::string &key, const std::string &type, const std::string &units=std::string())
 
 Publication (ValueFederate *valueFed, const std::string &key, DataType type, const std::string &units=std::string())
 
template<class FedPtr >
 Publication (FedPtr &valueFed, const std::string &key, DataType type, const std::string &units=std::string())
 
 Publication (InterfaceVisibility locality, ValueFederate *valueFed, const std::string &key, DataType type, const std::string &units=std::string())
 
template<class FedPtr >
 Publication (InterfaceVisibility locality, FedPtr &valueFed, const std::string &key, DataType type, const std::string &units=std::string())
 
const std::string & getType () const
 
const std::string & getUnits () const
 
void addTarget (std::string_view target)
 
void publish (double val)
 
void publish (const std::vector< std::string > &val)
 
void publish (const std::vector< double > &val)
 
void publish (const double *vals, int size)
 
void publish (const std::vector< std::complex< double >> &val)
 
void publishComplex (const double *vals, int size)
 
void publish (std::complex< double > val)
 
void publish (bool val)
 
void publish (Time val)
 
void publish (char val)
 
void publish (const NamedPoint &np)
 
void publish (std::string_view field, double val)
 
void publish (double val, const std::string &units)
 
void publish (double val, const units::precise_unit &units)
 
template<class X >
std::enable_if_t<(std::is_constructible_v< std::string_view, X >), void > publish (const X &val)
 
template<class X >
std::enable_if_t<(std::is_same_v< defV, remove_cv_ref< X >>), void > publish (const X &val)
 
template<class X >
std::enable_if_t<(std::is_integral_v< X > &&!std::is_same_v< remove_cv_ref< X >, char >), void > publish (X val)
 
void setMinimumChange (double deltaV) noexcept
 
void enableChangeDetection (bool enabled=true) noexcept
 
virtual const std::string & getDisplayName () const override
 
- Public Member Functions inherited from helics::Interface
 Interface (Federate *federate, InterfaceHandle id, std::string_view actName)
 
 Interface (Core *core, InterfaceHandle id, std::string_view actName)
 
InterfaceHandle getHandle () const
 
 operator InterfaceHandle () const
 
bool isValid () const
 
bool operator< (const Interface &inp) const
 
bool operator> (const Interface &inp) const
 
bool operator== (const Interface &inp) const
 
bool operator!= (const Interface &inp) const
 
const std::string & getLocalName () const
 
const std::string & getName () const
 
const std::string & getTarget () const
 
void addSourceTarget (std::string_view newTarget)
 
void addDestinationTarget (std::string_view newTarget)
 
void removeTarget (std::string_view targetToRemove)
 
const std::string & getInfo () const
 
void setInfo (const std::string &info)
 
void setTag (const std::string &tag, const std::string &value)
 
const std::string & getTag (const std::string &tag) const
 
virtual void setOption (int32_t option, int32_t value=1)
 
virtual int32_t getOption (int32_t option) const
 
const std::string & getInjectionType () const
 
const std::string & getExtractionType () const
 
const std::string & getInjectionUnits () const
 
const std::string & getExtractionUnits () const
 
const std::string & getSourceTargets () const
 
const std::string & getDestinationTargets () const
 
void close ()
 
void disconnectFromCore ()
 

Protected Attributes

ValueFederatefed {nullptr}
 the federate construct to interact with
 
DataType pubType {DataType::HELICS_ANY}
 the type of publication
 
bool changeDetectionEnabled {false}
 the change detection is enabled
 
bool disableAssign {false}
 disable assignment for the object
 
- Protected Attributes inherited from helics::Interface
Corecr {nullptr}
 pointer to the core object
 
InterfaceHandle handle {}
 the id as generated by the Federate
 
std::string mName
 the name or key of the interface
 

Friends

class ValueFederateManager
 

Detailed Description

define a publication object in the C++98 interface

Constructor & Destructor Documentation

◆ Publication() [1/9]

helics::Publication::Publication ( ValueFederate valueFed,
InterfaceHandle  id,
const std::string &  key,
const std::string &  type,
const std::string &  units 
)

constructor for a publication used by the valueFederateManager

Parameters
valueFeda pointer the link valueFederate
idthe InterfaceHandle from the core
keythe identifier for the publication
typethe type of the publication
unitsan optional string defining the units

References helics::getTypeFromString(), and pubType.

◆ Publication() [2/9]

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

constructor for a publication

Parameters
valueFeda pointer the link valueFederate
keythe identifier for the publication
typethe type of the publication
unitsan optional string defining the units

References helics::ValueFederate::getPublication(), and helics::ValueFederate::registerPublication().

◆ Publication() [3/9]

template<class FedPtr >
helics::Publication::Publication ( FedPtr  valueFed,
const std::string &  key,
const std::string &  type = std::string(),
const std::string &  units = std::string() 
)
inline

base constructor for a publication

Parameters
valueFeda pointer of some kind to a value federate (any dereferenceable type with * and -> operator that results in a valueFederate object
keythe identifier for the publication
typethe type of the publication
unitsan optional string defining the units

◆ Publication() [4/9]

helics::Publication::Publication ( InterfaceVisibility  locality,
ValueFederate valueFed,
const std::string &  key,
const std::string &  type,
const std::string &  units = std::string() 
)

base constructor for a publication

Parameters
localityeither GLOBAL or LOCAL, LOCAL prepends the federate name to create a global identifier
valueFeda pointer to a value federate
keythe identifier for the publication
typethe type of the publication
unitsan optional string defining the units

◆ Publication() [5/9]

template<class FedPtr >
helics::Publication::Publication ( InterfaceVisibility  locality,
FedPtr &  valueFed,
const std::string &  key,
const std::string &  type,
const std::string &  units = std::string() 
)
inline

base constructor for a publication

Parameters
localityeither GLOBAL or LOCAL, LOCAL prepends the federate name to create a global identifier
valueFeda pointer of some kind to a value federate (any dereferenceable type with * and -> operator that results in a valueFederate object
keythe identifier for the publication
typethe type of the publication
unitsan optional string defining the units

◆ Publication() [6/9]

helics::Publication::Publication ( ValueFederate valueFed,
const std::string &  key,
DataType  type,
const std::string &  units = std::string() 
)
inline

constructor to build a publication object

Parameters
valueFedthe ValueFederate to use
keythe identifier for the publication
typethe defined type of the publication
unitsthe units associated with a Federate

◆ Publication() [7/9]

template<class FedPtr >
helics::Publication::Publication ( FedPtr &  valueFed,
const std::string &  key,
DataType  type,
const std::string &  units = std::string() 
)
inline

constructor to build a publication object

Parameters
valueFedthe ValueFederate to use
keythe identifier for the publication
typethe defined type of the publication
unitsthe units associated with a Federate

◆ Publication() [8/9]

helics::Publication::Publication ( InterfaceVisibility  locality,
ValueFederate valueFed,
const std::string &  key,
DataType  type,
const std::string &  units = std::string() 
)
inline

constructor to build a publication object

Parameters
localityset to global for a global publication or local for a local one
valueFedthe ValueFederate to use
keythe identifier for the publication
typethe defined type of the publication
unitsthe units associated with a Federate

◆ Publication() [9/9]

template<class FedPtr >
helics::Publication::Publication ( InterfaceVisibility  locality,
FedPtr &  valueFed,
const std::string &  key,
DataType  type,
const std::string &  units = std::string() 
)
inline

constructor to build a publication object

Parameters
localityset to global for a global publication or local for a local one
valueFedthe ValueFederate to use
keythe identifier for the publication
typethe defined type of the publication
unitsthe units associated with a Federate

Member Function Documentation

◆ enableChangeDetection()

void helics::Publication::enableChangeDetection ( bool  enabled = true)
inlinenoexcept

if set to false, the change detection mechanisms are not enabled if set to true the values will be published if there is sufficient change as specified in the call to setMinimumChange

◆ getDisplayName()

virtual const std::string& helics::Publication::getDisplayName ( ) const
inlineoverridevirtual

get the display name for an input

the name is the given local name or if empty the name of the target

Implements helics::Interface.

◆ getType()

const std::string& helics::Publication::getType ( ) const
inline

get the type for the publication

◆ getUnits()

const std::string& helics::Publication::getUnits ( ) const
inline

get the units of the publication

◆ publish() [1/5]

template<class X >
std::enable_if_t<(std::is_constructible_v<std::string_view, X>), void> helics::Publication::publish ( const X &  val)
inline

publish stringLike values

◆ publish() [2/5]

template<class X >
std::enable_if_t<(std::is_same_v<defV, remove_cv_ref<X>>), void> helics::Publication::publish ( const X &  val)
inline

publish stringLike values

◆ publish() [3/5]

void helics::Publication::publish ( double  val)

close a input during an active simulation

it is not necessary to call this function unless you are continuing the simulation after the close send a value for publication

Parameters
valthe value to publish

References helics::changeDetected(), changeDetectionEnabled, fed, helics::ValueFederate::publishBytes(), pubType, and helics::typeConvert().

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

◆ publish() [4/5]

void helics::Publication::publish ( double  val,
const std::string &  units 
)

secondary publish function to allow unit conversion before publication

Parameters
valthe value to publish
unitsthe units association with the publication

References publish().

◆ publish() [5/5]

template<class X >
std::enable_if_t<(std::is_integral_v<X> && !std::is_same_v<remove_cv_ref<X>, char>), void> helics::Publication::publish ( val)
inline

publish integral values

◆ publishComplex()

void helics::Publication::publishComplex ( const double *  vals,
int  size 
)

interpret as a vector of alternating real and imag values

References helics::changeDetected(), changeDetectionEnabled, fed, helics::ValueFederate::publishBytes(), pubType, and helics::typeConvert().

◆ setMinimumChange()

void helics::Publication::setMinimumChange ( double  deltaV)
inlinenoexcept

set the level by which a value must have changed to actually publish the value


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