MADARA  3.4.1
madara::transport::ZMQTransportReadThread Class Reference

Thread for reading knowledge updates through a ZMQ datagram socket. More...

#include <ZMQTransportReadThread.h>

Inheritance diagram for madara::transport::ZMQTransportReadThread:
madara::threads::BaseThread

Public Member Functions

 ZMQTransportReadThread (const TransportSettings &settings, const std::string &id, void *write_socket, BandwidthMonitor &send_monitor, BandwidthMonitor &receive_monitor, PacketScheduler &packet_scheduler)
 Constructor. More...
 
void cleanup (void)
 Cleanup function called by thread manager. More...
 
void init (knowledge::KnowledgeBase &knowledge)
 Initializes MADARA context-related items. More...
 
void rebroadcast (const char *print_prefix, MessageHeader *header, const knowledge::KnowledgeMap &records)
 Sends a rebroadcast packet. More...
 
void run (void)
 The main loop internals for the read thread. More...
 

Protected Member Functions

virtual void init_control_vars (knowledge::KnowledgeBase &control)
 Initializes the thread implementation's control plane variables. More...
 

Protected Attributes

std::string name
 The unique name of your thread. More...
 
madara::knowledge::containers::Integer paused
 thread safe paused flag that may be set by the Threader More...
 
madara::knowledge::containers::Integer terminated
 thread safe terminated flag that may be set by the Threader base More...
 

Private Attributes

madara::utility::ScopedArray< char > buffer_
 buffer for receiving More...
 
knowledge::ThreadSafeContextcontext_
 knowledge context More...
 
knowledge::containers::Integer failed_receives_
 bad receives More...
 
const std::string id_
 host:port identifier of this process More...
 
madara::knowledge::CompiledExpression on_data_received_
 data received rules, defined in Transport settings More...
 
PacketSchedulerpacket_scheduler_
 scheduler for mimicking target network conditions More...
 
void * read_socket_
 The multicast socket we are reading from. More...
 
BandwidthMonitorreceive_monitor_
 monitor for receiving bandwidth usage More...
 
knowledge::containers::Integer received_data_
 received data More...
 
knowledge::containers::Integer received_data_max_
 max data received More...
 
knowledge::containers::Integer received_data_min_
 min data received More...
 
knowledge::containers::Integer received_packets_
 received packets More...
 
BandwidthMonitorsend_monitor_
 monitor for sending bandwidth usage More...
 
const QoSTransportSettings settings_
 quality-of-service transport settings More...
 
void * write_socket_
 underlying socket for sending More...
 

Detailed Description

Thread for reading knowledge updates through a ZMQ datagram socket.

Definition at line 34 of file ZMQTransportReadThread.h.

Constructor & Destructor Documentation

◆ ZMQTransportReadThread()

madara::transport::ZMQTransportReadThread::ZMQTransportReadThread ( const TransportSettings settings,
const std::string &  id,
void *  write_socket,
BandwidthMonitor send_monitor,
BandwidthMonitor receive_monitor,
PacketScheduler packet_scheduler 
)

Constructor.

Parameters
settingsTransport settings
idhost:port identifier of this process, to allow for rejection of duplicates
write_socketsocket for sending
send_monitorbandwidth monitor for enforcing send limits
receive_monitorbandwidth monitor for enforcing receive limits
packet_schedulerscheduler for mimicking network conditions

Definition at line 11 of file ZMQTransportReadThread.cpp.

Member Function Documentation

◆ cleanup()

void madara::transport::ZMQTransportReadThread::cleanup ( void  )
virtual

Cleanup function called by thread manager.

Reimplemented from madara::threads::BaseThread.

Definition at line 216 of file ZMQTransportReadThread.cpp.

◆ init()

void madara::transport::ZMQTransportReadThread::init ( knowledge::KnowledgeBase knowledge)
virtual

Initializes MADARA context-related items.

Parameters
knowledgecontext for querying current program state

Reimplemented from madara::threads::BaseThread.

Definition at line 26 of file ZMQTransportReadThread.cpp.

◆ init_control_vars()

virtual void madara::threads::BaseThread::init_control_vars ( knowledge::KnowledgeBase control)
inlineprotectedvirtualinherited

Initializes the thread implementation's control plane variables.

Parameters
controlthe control plane between Threader and threads

Reimplemented in madara::threads::JavaThread.

Definition at line 78 of file BaseThread.h.

◆ rebroadcast()

void madara::transport::ZMQTransportReadThread::rebroadcast ( const char *  print_prefix,
MessageHeader header,
const knowledge::KnowledgeMap records 
)

Sends a rebroadcast packet.

Parameters
print_prefixprefix to include before every log message, e.g., "MyTransport::svc"
headerheader for the rebroadcasted packet
recordsrecords to rebroadcast (already filtered for rebroadcast)

Definition at line 245 of file ZMQTransportReadThread.cpp.

◆ run()

void madara::transport::ZMQTransportReadThread::run ( void  )
virtual

The main loop internals for the read thread.

Implements madara::threads::BaseThread.

Definition at line 280 of file ZMQTransportReadThread.cpp.

Member Data Documentation

◆ buffer_

madara::utility::ScopedArray<char> madara::transport::ZMQTransportReadThread::buffer_
private

buffer for receiving

Definition at line 101 of file ZMQTransportReadThread.h.

◆ context_

knowledge::ThreadSafeContext* madara::transport::ZMQTransportReadThread::context_
private

knowledge context

Definition at line 87 of file ZMQTransportReadThread.h.

◆ failed_receives_

knowledge::containers::Integer madara::transport::ZMQTransportReadThread::failed_receives_
private

bad receives

Definition at line 116 of file ZMQTransportReadThread.h.

◆ id_

const std::string madara::transport::ZMQTransportReadThread::id_
private

host:port identifier of this process

Definition at line 84 of file ZMQTransportReadThread.h.

◆ name

std::string madara::threads::BaseThread::name
protectedinherited

The unique name of your thread.

Definition at line 90 of file BaseThread.h.

◆ on_data_received_

madara::knowledge::CompiledExpression madara::transport::ZMQTransportReadThread::on_data_received_
private

data received rules, defined in Transport settings

Definition at line 97 of file ZMQTransportReadThread.h.

◆ packet_scheduler_

PacketScheduler& madara::transport::ZMQTransportReadThread::packet_scheduler_
private

scheduler for mimicking target network conditions

Definition at line 110 of file ZMQTransportReadThread.h.

◆ paused

madara::knowledge::containers::Integer madara::threads::BaseThread::paused
protectedinherited

thread safe paused flag that may be set by the Threader

Definition at line 101 of file BaseThread.h.

◆ read_socket_

void* madara::transport::ZMQTransportReadThread::read_socket_
private

The multicast socket we are reading from.

Definition at line 93 of file ZMQTransportReadThread.h.

◆ receive_monitor_

BandwidthMonitor& madara::transport::ZMQTransportReadThread::receive_monitor_
private

monitor for receiving bandwidth usage

Definition at line 107 of file ZMQTransportReadThread.h.

◆ received_data_

knowledge::containers::Integer madara::transport::ZMQTransportReadThread::received_data_
private

received data

Definition at line 119 of file ZMQTransportReadThread.h.

◆ received_data_max_

knowledge::containers::Integer madara::transport::ZMQTransportReadThread::received_data_max_
private

max data received

Definition at line 122 of file ZMQTransportReadThread.h.

◆ received_data_min_

knowledge::containers::Integer madara::transport::ZMQTransportReadThread::received_data_min_
private

min data received

Definition at line 125 of file ZMQTransportReadThread.h.

◆ received_packets_

knowledge::containers::Integer madara::transport::ZMQTransportReadThread::received_packets_
private

received packets

Definition at line 113 of file ZMQTransportReadThread.h.

◆ send_monitor_

BandwidthMonitor& madara::transport::ZMQTransportReadThread::send_monitor_
private

monitor for sending bandwidth usage

Definition at line 104 of file ZMQTransportReadThread.h.

◆ settings_

const QoSTransportSettings madara::transport::ZMQTransportReadThread::settings_
private

quality-of-service transport settings

Definition at line 81 of file ZMQTransportReadThread.h.

◆ terminated

madara::knowledge::containers::Integer madara::threads::BaseThread::terminated
protectedinherited

thread safe terminated flag that may be set by the Threader base

Definition at line 96 of file BaseThread.h.

◆ write_socket_

void* madara::transport::ZMQTransportReadThread::write_socket_
private

underlying socket for sending

Definition at line 90 of file ZMQTransportReadThread.h.


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