PdCom  5.2
Process data communication client
Public Types | Public Member Functions | List of all members
PdCom::Subscription Class Reference

PdCom Subscription interface. More...

#include <Subscription.h>

Inheritance diagram for PdCom::Subscription:
PdCom::DataDeserializer< Subscription >

Public Types

enum  State { Invalid = 0, Pending, Active }
 

Public Member Functions

 Subscription ()=default
 Default constructor for an empty subscription.
 
 Subscription (Subscription &&) noexcept
 
Subscriptionoperator= (Subscription &&) noexcept
 
 Subscription (Subscriber &subscriber, const Variable &variable, const Selector &selector={})
 Constructor for a known variable. More...
 
 Subscription (Subscriber &subscriber, Process &process, const std::string &path, const Selector &selector={})
 Constructor for an unknown variable. More...
 
void poll ()
 Poll values from the server. More...
 
const void * getData () const
 Get the data Pointer. More...
 
Variable getVariable () const
 Access the subscribed variable. More...
 
void print (std::ostream &os, char delimiter) const
 Print the value(s). More...
 
bool empty () const noexcept
 Check whether the subscription is default-constructed. More...
 
State getState () const noexcept
 Get the current state. More...
 
ProcessgetProcess () const
 Get the assigned Process. More...
 
std::string getPath () const
 Get the path of the subscribed variable. More...
 
- Public Member Functions inherited from PdCom::DataDeserializer< Subscription >
std::enable_if<!std::is_arithmetic< T >::value, void >::type getValue (T &dest, size_t offset=0) const
 Copy the values into a custom buffer. More...
 
std::enable_if< std::is_arithmetic< T >::value, void >::type getValue (T &dest, size_t offset=0) const
 Copy the values into a custom buffer. More...
 
void getValue (T(&dest)[M][N]) const
 
void getValue (T(&dest)[N], size_t offset=0) const
 
getValue () const
 

Detailed Description

PdCom Subscription interface.

This class represents a subscription to a variable. It is updated either on a periodic base, on an external event (e.g. the value has changed) or as requested with poll(). The type of transmission can be selected by creating an appropriate Subscriber object.

To cancel a subscription, you have to delete the corresponding subscription instance.

Calling getState() is always allowed, the other member functions need the subscription to be Active.

Examples:
advanced_example.cpp.

Constructor & Destructor Documentation

◆ Subscription() [1/2]

PdCom::Subscription::Subscription ( Subscriber subscriber,
const Variable variable,
const Selector selector = {} 
)

Constructor for a known variable.

Parameters
subscriberSubscriber which will recieve the status updates.
variableThe variable to subscribe.
selectorSelect parts of multi-dimensional variables.
Exceptions
invalid_subscriptionSubscription is already known to be invalid.

◆ Subscription() [2/2]

PdCom::Subscription::Subscription ( Subscriber subscriber,
Process process,
const std::string &  path,
const Selector selector = {} 
)

Constructor for an unknown variable.

Parameters
subscriberSubscriber which will recieve the status updates.
processThe process.
pathPath of the variable to subscribe.
selectorSelect parts of multi-dimensional variables.
Exceptions
invalid_subscriptionSubscription is already known to be invalid.

Member Function Documentation

◆ empty()

bool PdCom::Subscription::empty ( ) const
inlinenoexcept

Check whether the subscription is default-constructed.

Returns
false The subscription is populated.

◆ getData()

const void* PdCom::Subscription::getData ( ) const

Get the data Pointer.

The subscription has to be Active.

Returns
Pointer to the internal storage.

◆ getPath()

std::string PdCom::Subscription::getPath ( ) const

Get the path of the subscribed variable.

This also works in Pending and Invalid state.

Returns
Path of the subscribed variable.

◆ getProcess()

Process* PdCom::Subscription::getProcess ( ) const

Get the assigned Process.

Returns
The Process.

◆ getState()

State PdCom::Subscription::getState ( ) const
inlinenoexcept

Get the current state.

Returns
The state.
Examples:
advanced_example.cpp.

◆ getVariable()

Variable PdCom::Subscription::getVariable ( ) const

Access the subscribed variable.

The subscription must not be empty().

Returns
The subscribed variable.

◆ poll()

void PdCom::Subscription::poll ( )

Poll values from the server.

The subscription has to be Active.

◆ print()

void PdCom::Subscription::print ( std::ostream &  os,
char  delimiter 
) const

Print the value(s).

Parameters
osStream to print into.
delimiterDelimiter which separates the values.
Examples:
advanced_example.cpp.

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