MADARA  3.1.8
madara::transport::BroadcastTransportReadThread Class Reference

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

#include <BroadcastTransportReadThread.h>

Inheritance diagram for madara::transport::BroadcastTransportReadThread:
Collaboration diagram for madara::transport::BroadcastTransportReadThread:

Public Member Functions

 BroadcastTransportReadThread (const TransportSettings &settings, const std::string &id, const ACE_INET_Addr &address, ACE_SOCK_Dgram_Bcast &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 Java 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

ACE_INET_Addr address_
 The broadcast address we are subscribing to. More...
 
madara::utility::ScopedArray< char > buffer_
 buffer for sending More...
 
knowledge::ThreadSafeContextcontext_
 knowledge context 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...
 
const QoSTransportSettingsqos_settings_
 pointer to qos_settings (if applicable) More...
 
ACE_SOCK_Dgram read_socket_
 The broadcast socket we are reading from. More...
 
BandwidthMonitorreceive_monitor_
 monitor for receiving bandwidth usage More...
 
BandwidthMonitorsend_monitor_
 monitor for sending bandwidth usage More...
 
const TransportSettingssettings_
 Transport settings. More...
 
ACE_SOCK_Dgram_Bcast write_socket_
 underlying socket for rebroadcasting More...
 

Detailed Description

Thread for reading knowledge updates through a Multicast datagram socket.

Definition at line 42 of file BroadcastTransportReadThread.h.

Constructor & Destructor Documentation

madara::transport::BroadcastTransportReadThread::BroadcastTransportReadThread ( const TransportSettings settings,
const std::string &  id,
const ACE_INET_Addr &  address,
ACE_SOCK_Dgram_Bcast &  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
addressthe ACE socket address to read from
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 10 of file BroadcastTransportReadThread.cpp.

Member Function Documentation

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

Cleanup function called by thread manager.

Reimplemented from madara::threads::BaseThread.

Definition at line 135 of file BroadcastTransportReadThread.cpp.

void madara::transport::BroadcastTransportReadThread::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 104 of file BroadcastTransportReadThread.cpp.

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

Initializes the Java thread implementation's control plane variables.

Parameters
controlthe control plane between Threader and threads

Reimplemented in madara::threads::JavaThread.

Definition at line 86 of file BaseThread.h.

void madara::transport::BroadcastTransportReadThread::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 147 of file BroadcastTransportReadThread.cpp.

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

The main loop internals for the read thread.

Implements madara::threads::BaseThread.

Definition at line 383 of file BroadcastTransportReadThread.cpp.

Member Data Documentation

ACE_INET_Addr madara::transport::BroadcastTransportReadThread::address_
private

The broadcast address we are subscribing to.

Definition at line 107 of file BroadcastTransportReadThread.h.

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

buffer for sending

Definition at line 121 of file BroadcastTransportReadThread.h.

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

knowledge context

Definition at line 104 of file BroadcastTransportReadThread.h.

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

host:port identifier of this process

Definition at line 101 of file BroadcastTransportReadThread.h.

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

The unique name of your thread.

Definition at line 96 of file BaseThread.h.

madara::knowledge::CompiledExpression madara::transport::BroadcastTransportReadThread::on_data_received_
private

data received rules, defined in Transport settings

Definition at line 117 of file BroadcastTransportReadThread.h.

PacketScheduler& madara::transport::BroadcastTransportReadThread::packet_scheduler_
private

scheduler for mimicking target network conditions

Definition at line 133 of file BroadcastTransportReadThread.h.

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

thread safe paused flag that may be set by the Threader

Definition at line 107 of file BaseThread.h.

const QoSTransportSettings* madara::transport::BroadcastTransportReadThread::qos_settings_
private

pointer to qos_settings (if applicable)

Definition at line 124 of file BroadcastTransportReadThread.h.

ACE_SOCK_Dgram madara::transport::BroadcastTransportReadThread::read_socket_
private

The broadcast socket we are reading from.

Definition at line 110 of file BroadcastTransportReadThread.h.

BandwidthMonitor& madara::transport::BroadcastTransportReadThread::receive_monitor_
private

monitor for receiving bandwidth usage

Definition at line 130 of file BroadcastTransportReadThread.h.

BandwidthMonitor& madara::transport::BroadcastTransportReadThread::send_monitor_
private

monitor for sending bandwidth usage

Definition at line 127 of file BroadcastTransportReadThread.h.

const TransportSettings& madara::transport::BroadcastTransportReadThread::settings_
private

Transport settings.

Definition at line 98 of file BroadcastTransportReadThread.h.

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

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

Definition at line 102 of file BaseThread.h.

ACE_SOCK_Dgram_Bcast madara::transport::BroadcastTransportReadThread::write_socket_
private

underlying socket for rebroadcasting

Definition at line 113 of file BroadcastTransportReadThread.h.


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