Class CSubscriberImpl

Nested Relationships

Nested Types

Class Documentation

class CSubscriberImpl

Public Types

using SPublicationInfo = Registration::SampleIdentifier

Public Functions

CSubscriberImpl(const SDataTypeInformation &topic_info_, const eCAL::eCALReader::SAttributes &attr_)
~CSubscriberImpl()
CSubscriberImpl(const CSubscriberImpl&) = delete
CSubscriberImpl &operator=(const CSubscriberImpl&) = delete
CSubscriberImpl(CSubscriberImpl&&) = delete
CSubscriberImpl &operator=(CSubscriberImpl&&) = delete
bool Read(std::string &buf_, long long *time_ = nullptr, int rcv_timeout_ms_ = 0)
bool SetReceiveCallback(ReceiveCallbackT callback_)
bool RemoveReceiveCallback()
bool SetEventCallback(eSubscriberEvent type_, v5::SubEventCallbackT callback_)
bool RemoveEventCallback(eSubscriberEvent type_)
bool SetEventIDCallback(const SubEventCallbackT callback_)
bool RemoveEventCallback()
bool SetAttribute(const std::string &attr_name_, const std::string &attr_value_)
bool ClearAttribute(const std::string &attr_name_)
void SetFilterIDs(const std::set<long long> &filter_ids_)
void ApplyPublisherRegistration(const SPublicationInfo &publication_info_, const SDataTypeInformation &data_type_info_, const SLayerStates &pub_layer_states_)
void ApplyPublisherUnregistration(const SPublicationInfo &publication_info_, const SDataTypeInformation &data_type_info_)
void ApplyLayerParameter(const SPublicationInfo &publication_info_, eTLayerType type_, const Registration::ConnectionPar &parameter_)
void GetRegistration(Registration::Sample &sample)
inline bool IsCreated() const
bool IsPublished() const
size_t GetPublisherCount() const
inline const STopicId &GetTopicId() const
inline const std::string &GetTopicName() const
inline const SDataTypeInformation &GetDataTypeInformation() const
void InitializeLayers()
size_t ApplySample(const Payload::TopicInfo &topic_info_, const char *payload_, size_t size_, long long id_, long long clock_, long long time_, size_t hash_, eTLayerType layer_)

Protected Types

using ConnectionMapT = std::map<SPublicationInfo, SConnection>
using EventCallbackMapT = std::map<eSubscriberEvent, v5::SubEventCallbackT>
using WriterCounterMapT = std::unordered_map<EntityIdT, long long>

Protected Functions

void Register()
void Unregister()
void GetRegistrationSample(Registration::Sample &sample)
void GetUnregistrationSample(Registration::Sample &sample)
void StartTransportLayer()
void StopTransportLayer()
void FireEvent(const eSubscriberEvent type_, const SPublicationInfo &publication_info_, const SDataTypeInformation &data_type_info_)
void FireConnectEvent(const SPublicationInfo &publication_info_, const SDataTypeInformation &data_type_info_)
void FireDisconnectEvent(const SPublicationInfo &publication_info_, const SDataTypeInformation &data_type_info_)
void FireDroppedEvent(const SPublicationInfo &publication_info_, const SDataTypeInformation &data_type_info_)
size_t GetConnectionCount()
bool CheckMessageClock(const SPublicationInfo &publication_info_, long long current_clock_)
int32_t GetFrequency()

Protected Attributes

EntityIdT m_subscriber_id
SDataTypeInformation m_topic_info
STopicId m_topic_id
std::atomic<size_t> m_topic_size
mutable std::mutex m_connection_map_mtx
ConnectionMapT m_connection_map
std::atomic<size_t> m_connection_count = {0}
mutable std::mutex m_read_buf_mutex
std::condition_variable m_read_buf_cv
bool m_read_buf_received = false
std::string m_read_buf
long long m_read_time = 0
std::mutex m_receive_callback_mutex
ReceiveCallbackT m_receive_callback
std::atomic<int> m_receive_time
std::deque<size_t> m_sample_hash_queue
std::mutex m_event_callback_map_mutex
EventCallbackMapT m_event_callback_map
std::mutex m_event_id_callback_mutex
SubEventCallbackT m_event_id_callback
std::atomic<long long> m_clock
std::mutex m_frequency_calculator_mutex
ResettableFrequencyCalculator<std::chrono::steady_clock> m_frequency_calculator
std::set<long long> m_id_set
WriterCounterMapT m_writer_counter_map
long long m_message_drops = 0
SLayerStates m_layers
std::atomic<bool> m_created
eCAL::eCALReader::SAttributes m_attributes
struct SConnection

Public Members

SDataTypeInformation data_type_info
SLayerStates layer_states
bool state = false
struct SLayerState

Public Members

bool write_enabled = false
bool read_enabled = false
bool active = false
struct SLayerStates

Public Members

SLayerState udp
SLayerState shm
SLayerState tcp