openDAQ
Open data acquisition platform
StreamingPtr Class Reference

Represents the client-side part of a streaming service responsible for initiating communication with the openDAQ device streaming server and processing the received data. Wraps the client-side implementation details of the particular data transfer protocol used by openDAQ to send processed/acquired data from devices running an openDAQ Server to an openDAQ Client. More...

Inherits ObjectPtr< IStreaming >.

Detailed Description

Represents the client-side part of a streaming service responsible for initiating communication with the openDAQ device streaming server and processing the received data. Wraps the client-side implementation details of the particular data transfer protocol used by openDAQ to send processed/acquired data from devices running an openDAQ Server to an openDAQ Client.

The Streaming is used as a selectable data source for mirrored signals. For this, it provides methods, allowing mirrored signals to be added/removed dynamically, to enable/disable the use of Streaming as a data source of these signals. Forwarding of packets received from the remote device through the data transfer protocol down to the signal path is enabled when the following conditions are met:

  • Streaming object itself is in active state.
  • Streaming is selected as an active source of the corresponding signal.

Usually, the data transfer protocol provides information about the signals whose data can be sent over the protocol. It allows the implementation to reject unsupported signals from being added to the streaming. Each Streaming object provides the string representation of a connection address used to connect to the streaming service of the device. This string representation is used as a unique ID to determine the streaming source for the mirrored signal.

When the generalized client-to-device streaming mechanism is employed, however, the roles are effectively switched: the server becomes a consumer of signal data, while the client-side Streaming object acts as the producer, sending signal data over the protocol. In this context, Streaming objects are expected to exist on the server side as well to interact with mirrored copies of client signals. In context of client-to-device streaming, in addition to signals, mirrored input ports can also be added or removed dynamically through the corresponding methods of the Streaming interface, similarly to mirrored signals.

The support for client-to-device streaming can be checked via getClientToDeviceStreamingEnabled. If it is not enabled or not supported by the protocol, the method provides false value, and adding or removing mirrored input ports is not allowed, therefore disabling any client-to-device streaming operations.

Public Member Functions

daq::Bool getActive () const
 Gets the active state of the Streaming. More...
 
void setActive (daq::Bool active) const
 Sets the Streaming to be either active or inactive. More...
 
void addSignals (const daq::ListPtr< daq::ISignal > &signals) const
 Adds signals to the Streaming. More...
 
void removeSignals (const daq::ListPtr< daq::ISignal > &signals) const
 Removes signals from the Streaming. More...
 
void removeAllSignals () const
 Removes all added signals from the Streaming.
 
daq::StringPtr getConnectionString () const
 Gets the string representation of a connection address used to connect to the streaming service of the device. More...
 
daq::EnumerationPtr getConnectionStatus () const
 Retrieves the current status of the streaming connection. More...
 
void addInputPorts (const daq::ListPtr< daq::IMirroredInputPortConfig > &inputPorts) const
 Adds input ports to the Streaming. More...
 
void removeInputPorts (const daq::ListPtr< daq::IMirroredInputPortConfig > &inputPorts) const
 Removes input ports from the Streaming. More...
 
void removeAllInputPorts () const
 Removes all added input ports from the Streaming.
 
daq::StringPtr getOwnerDeviceRemoteId () const
 Gets the global ID of the device (as it appears on the remote instance) to which this streaming object establishes a connection. More...
 
daq::StringPtr getProtocolId () const
 Gets the identifier of the data transfer protocol (e.g., "OpenDAQNativeStreaming", "OpenDAQLTStreaming") used by this streaming object. More...
 
daq::Bool getClientToDeviceStreamingEnabled () const
 Checks whether client-to-device streaming is enabled for this streaming object. More...
 

Member Function Documentation

◆ addInputPorts()

void addInputPorts ( const daq::ListPtr< daq::IMirroredInputPortConfig > &  inputPorts) const
inline

Adds input ports to the Streaming.

Parameters
inputPortsThe list of input ports to be added.
Exceptions
DuplicateItemExceptionif an input port on the list is already added to the Streaming.
NoInterfaceExceptionif an input port on the list is not a mirrored signal.

After an input port is added to the Streaming, the Streaming automatically appears in the list of available streaming sources of an input port.

◆ addSignals()

void addSignals ( const daq::ListPtr< daq::ISignal > &  signals) const
inline

Adds signals to the Streaming.

Parameters
signalsThe list of signals to be added.
Exceptions
DuplicateItemExceptionif a signal on the list is already added to the Streaming.
NoInterfaceExceptionif a signal on the list is not a mirrored signal.

After a signal is added to the Streaming, the Streaming automatically appears in the list of available streaming sources of a signal. Some signals, however, may be silently ignored without triggering an error - for example, private signals are excluded by default.

◆ getActive()

daq::Bool getActive ( ) const
inline

Gets the active state of the Streaming.

Returns
True if the Streaming is active; false otherwise.

◆ getClientToDeviceStreamingEnabled()

daq::Bool getClientToDeviceStreamingEnabled ( ) const
inline

Checks whether client-to-device streaming is enabled for this streaming object.

Returns
The flag indicating if client-to-device streaming is enabled.

◆ getConnectionStatus()

daq::EnumerationPtr getConnectionStatus ( ) const
inline

Retrieves the current status of the streaming connection.

Returns
The connection status, represented as an enumeration of type "ConnectionStatusType" * with possible values: "Connected", "Reconnecting", or "Unrecoverable".

◆ getConnectionString()

daq::StringPtr getConnectionString ( ) const
inline

Gets the string representation of a connection address used to connect to the streaming service of the device.

Returns
The string used to connect to the streaming service.

◆ getOwnerDeviceRemoteId()

daq::StringPtr getOwnerDeviceRemoteId ( ) const
inline

Gets the global ID of the device (as it appears on the remote instance) to which this streaming object establishes a connection.

Returns
The string representing the device's remote ID.

◆ getProtocolId()

daq::StringPtr getProtocolId ( ) const
inline

Gets the identifier of the data transfer protocol (e.g., "OpenDAQNativeStreaming", "OpenDAQLTStreaming") used by this streaming object.

Returns
The string representing the protocol ID.

◆ removeInputPorts()

void removeInputPorts ( const daq::ListPtr< daq::IMirroredInputPortConfig > &  inputPorts) const
inline

Removes input ports from the Streaming.

Parameters
inputPortsThe list of input ports to be removed.
Exceptions
NotFoundExceptionif an input port on the list was not added to the Streaming.

After an input port is removed from the Streaming, the Streaming is automatically excluded in the list of available streaming sources of an input port.

◆ removeSignals()

void removeSignals ( const daq::ListPtr< daq::ISignal > &  signals) const
inline

Removes signals from the Streaming.

Parameters
signalsThe list of signals to be removed.
Exceptions
NotFoundExceptionif a signal on the list was not added to the Streaming.

After a signal is removed from the Streaming, the Streaming is automatically excluded in the list of available streaming sources of a signal.

◆ setActive()

void setActive ( daq::Bool  active) const
inline

Sets the Streaming to be either active or inactive.

Parameters
activeThe new active state of the Streaming.