ddt 1.4.0
 
Loading...
Searching...
No Matches
ddt::DdtDataPublisher Class Reference

#include <ddtDataPublisher.hpp>

Inheritance diagram for ddt::DdtDataPublisher:
ddt::DdtDataTransferLib DdtDataPublisher2Fake DdtDataPublisherFake

Public Member Functions

 DdtDataPublisher (DdtLogger *logger)
 
 DdtDataPublisher (log4cplus::Logger const &log4cplus_logger)
 
 ~DdtDataPublisher () override
 
int RegisterPublisher (const std::string uri, const std::string dsi, const bool compute_crc) override
 
int UnregisterPublisher () override
 
void PublishData () override
 
void SetBufferSize (const int max_sample_size, const int number_samples)
 
void WriteData (const int32_t sample_id, const std::vector< uint8_t > &datavec, const std::vector< uint8_t > &metadatavec)
 
void WriteData (const int32_t sample_id, const uint8_t *const data, const int32_t data_size, const uint8_t *const metadata, const int32_t metadata_size)
 
void set_topic_id (const int id)
 
bool get_connected_to_broker () const
 
- Public Member Functions inherited from ddt::DdtDataTransferLib
 DdtDataTransferLib (DdtLogger *ddt_logger)
 
 DdtDataTransferLib (log4cplus::Logger const &log4cplus_logger)
 
virtual ~DdtDataTransferLib ()
 
void SetQoS (const int ddt_latency, const int ddt_deadline)
 
const std::string VerifyPathInBrokerUri (std::string broker_uri)
 
int InitMAL (const std::string broker_uri)
 
std::unique_ptr< datatransfer::DataBrokerRegistrationSync, std::default_delete< datatransfer::DataBrokerRegistrationSync > > GetBrokerClient ()
 
virtual int RegisterSubscriber (const std::string uri, const std::string dsi, const std::string remote_uri, const int32_t interval=10)
 
virtual int UnregisterSubscriber ()
 
virtual DataSampleReadData ()
 
boost::signals2::connection ConnectToConnectionState (const std::function< void(ConnectionState)> &callback)
 

Protected Member Functions

void LoadDefaults ()
 
void ReadIni ()
 
- Protected Member Functions inherited from ddt::DdtDataTransferLib
void StartHeartbeat (const int32_t interval, const std::string id)
 
void StopHeartbeat ()
 
virtual void StopThreads ()
 
void Reconnect ()
 
void CheckHeartbeatTimeout (int32_t &new_reply_time)
 
void NotifyConnectionState (ConnectionState state)
 
const std::string GetConfigFilePath ()
 
void SpawnReconnectionThread ()
 

Protected Attributes

int topic_id = 0
 
- Protected Attributes inherited from ddt::DdtDataTransferLib
int latency = 0
 
int deadline = 0
 
int32_t reply_time = 0
 
int32_t heartbeat_interval = 0
 
std::thread hb_thread
 
std::thread reconnect_thread
 
std::atomic< bool > reconnect_pending {false}
 
std::mutex hb_cv_mutex
 
std::condition_variable hb_cv
 
std::atomic< bool > heartbeat_active {false}
 
std::atomic< bool > shutdown_in_progress {false}
 
std::unique_ptr< datatransfer::DataBrokerRegistrationSync, std::default_delete< datatransfer::DataBrokerRegistrationSync > > client
 
std::atomic< bool > connected_to_broker {false}
 
ConnectionStateSignalT connection_state_signal
 
std::atomic< ConnectionStatelast_notified_state {ConnectionState::Disconnected}
 
std::string broker_uri
 
elt::mal::rr::ListenerRegistration connection_listener
 
DdtLoggerlogger = nullptr
 
DdtLoggermy_logger = nullptr
 
const int32_t REPLY_TIME_DEFAULT = 6
 
const int32_t REPLY_TIME_MIN = 2
 
int32_t wait_for_connection = 0
 
const int32_t WAIT_FOR_CONNECTION_DEFAULT = 10
 
const int32_t WAIT_FOR_CONNECTION_MIN = 2
 
int32_t max_consecutive_failures = 0
 
const int32_t MAX_CONSECUTIVE_FAILURES_DEFAULT = 3
 
const int32_t MAX_CONSECUTIVE_FAILURES_MIN = 1
 

Additional Inherited Members

- Public Types inherited from ddt::DdtDataTransferLib
enum class  ConnectionState { Disconnected = 0 , Connected , Reconnecting , PublisherDisconnected }
 
using ConnectionStateSignalT = boost::signals2::signal<void(ConnectionState)>
 

Detailed Description

This class provides the functionality for publisher applications to register / unregister at a local broker and to publish data for a specified data stream.

Constructor & Destructor Documentation

◆ DdtDataPublisher() [1/2]

DdtDataPublisher::DdtDataPublisher ( DdtLogger * logger)
explicit

Constructor

Parameters
loggerA DDT logger object (no transfer of ownership).

◆ DdtDataPublisher() [2/2]

DdtDataPublisher::DdtDataPublisher ( log4cplus::Logger const & log4cplus_logger)
explicit

Constructor, taking a log4cplus logger as input

Parameters
log4cplus_loggerA log4cplus logger object (no transfer of ownership).

◆ ~DdtDataPublisher()

DdtDataPublisher::~DdtDataPublisher ( )
override

Destructor

Member Function Documentation

◆ get_connected_to_broker()

bool DdtDataPublisher::get_connected_to_broker ( ) const

Returns connected_to_broker.

Returns
True if the publisher is connected to the broker, false otherwise.

◆ LoadDefaults()

void DdtDataPublisher::LoadDefaults ( )
protected

Loads default values for configuration parameters.

◆ PublishData()

void DdtDataPublisher::PublishData ( )
overridevirtual

Function for triggering the local broker to publish data over the network.

Reimplemented from ddt::DdtDataTransferLib.

◆ ReadIni()

void DdtDataPublisher::ReadIni ( )
protected

Reads the datatransferlib configuration file.

An exception is thrown if the config file does not exist. In that case the default values are used instead.

make sure configured reply time is at least REPLY_TIME_MIN set to default value otherwise

◆ RegisterPublisher()

int DdtDataPublisher::RegisterPublisher ( const std::string uri,
const std::string dsi,
const bool compute_crc )
overridevirtual

Function for registering a publisher at the local broker using a MAL client.

Parameters
uriThe MAL Uniform Resource Identifier.
dsiThe data stream identifier.
compute_crcUsed to switch on / off the CRC computation.
Returns
Success of registration.

Reimplemented from ddt::DdtDataTransferLib.

◆ set_topic_id()

void DdtDataPublisher::set_topic_id ( const int id)

Sets the topic_id.

Parameters
idThe topic ID.

◆ SetBufferSize()

void DdtDataPublisher::SetBufferSize ( const int max_sample_size,
const int number_samples )

Specifies the maximum data sample size and the number of samples.

Parameters
max_sample_sizeThe maximum data sample size.
number_samplesThe Number of samples stored in the SHM ring buffer.

◆ UnregisterPublisher()

int DdtDataPublisher::UnregisterPublisher ( )
overridevirtual

Function for unregistering a publisher from the local broker.

Returns
Success of unregistration.

Reimplemented from ddt::DdtDataTransferLib.

◆ WriteData() [1/2]

void DdtDataPublisher::WriteData ( const int32_t sample_id,
const std::vector< uint8_t > & datavec,
const std::vector< uint8_t > & metadatavec )

Writes the data packet into shared memory using a memory accessor.

Parameters
sample_idThe sample ID.
datavecVector containing the data.
metadatavecVector containing the meta data.

◆ WriteData() [2/2]

void DdtDataPublisher::WriteData ( const int32_t sample_id,
const uint8_t *const data,
const int32_t data_size,
const uint8_t *const metadata,
const int32_t metadata_size )

Writes the data packet into shared memory using a memory accessor. The data is passed as a pointer.

Parameters
sample_idThe sample ID.
dataPointer to the data.
data_sizeThe size of the data.
metadataPointer to the meta data.
metadata_sizeThe size of the meta data.

Member Data Documentation

◆ topic_id

int ddt::DdtDataPublisher::topic_id = 0
protected

Topic ID of the data


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