MADARA  3.2.3
madara::transport::BroadcastTransport Class Reference

Broadcast-based transport for knowledge. More...

#include <BroadcastTransport.h>

Inheritance diagram for madara::transport::BroadcastTransport:
madara::transport::UdpTransport madara::transport::BasicASIOTransport madara::transport::Base

Public Types

typedef std::vector< std::string > HostsVector
 Used to define a vector of hosts to contact. More...
 

Public Member Functions

int check_transport (void)
 all subclasses should call this method at the beginning of send_data More...
 
void close () override
 Closes this transport. More...
 
void invalidate_transport (void)
 Invalidates a transport to indicate it is shutting down. More...
 
long prep_send (const knowledge::VariableReferenceMap &orig_updates, const char *print_prefix)
 Preps a message for sending. More...
 
int reliability (void) const
 Accesses reliability setting. More...
 
int reliability (const int &setting)
 Sets the reliability setting. More...
 
long send_data (const madara::knowledge::VariableReferenceMap &updates) override
 Sends a list of knowledge updates to listeners. More...
 
TransportSettingssettings (void)
 Getter for the transport settings. More...
 
int setup () override
 all subclasses should call this method at the end of its setup More...
 
int validate_transport (void)
 Validates a transport to indicate it is not shutting down. More...
 

Static Public Attributes

static const double default_read_hertz
 

Protected Member Functions

bool pre_send_buffer (size_t addr_index) override
 
long send_buffer (const udp::endpoint &target, const char *buf, size_t size)
 
long send_message (const char *buf, size_t size)
 
int setup_read_socket () override
 
int setup_read_thread (double hertz, const std::string &name) override
 
virtual int setup_read_threads ()
 
virtual int setup_socket (udp::socket &socket)
 
virtual int setup_sockets ()
 
int setup_write_socket () override
 

Protected Attributes

std::vector< udp::endpoint > addresses_
 holds all multicast addresses we are sending to More...
 
madara::utility::ScopedArray< char > buffer_
 buffer for sending More...
 
madara::knowledge::ThreadSafeContextcontext_
 
HostsVector hosts
 
const std::string id_
 host:port identifier of this process More...
 
asio::io_service io_service_
 Boost::ASIO IO context. More...
 
volatile bool is_valid_
 
knowledge::KnowledgeBase knowledge_
 knowledge base for threads to use More...
 
madara::expression::ExpressionTree on_data_received_
 data received rules, defined in Transport settings More...
 
PacketScheduler packet_scheduler_
 scheduler for dropping packets to simulate network issues More...
 
threads::Threader read_threads_
 threads for reading knowledge updates More...
 
BandwidthMonitor receive_monitor_
 monitor for receiving bandwidth usage More...
 
BandwidthMonitor send_monitor_
 monitor for sending bandwidth usage More...
 
QoSTransportSettings settings_
 
volatile bool shutting_down_
 
udp::socket socket_ {io_service_}
 underlying socket More...
 

Detailed Description

Broadcast-based transport for knowledge.

This transport currently supports the following transport settings:
1) a single host:port pairing
2) the reduced message header
3) the normal message header
4) domain differentiation
5) on data received logic
6) multi-assignment of records
7) rebroadcasting

Definition at line 40 of file BroadcastTransport.h.

Member Typedef Documentation

typedef std::vector<std::string> madara::transport::Base::HostsVector
inherited

Used to define a vector of hosts to contact.

Definition at line 51 of file Transport.h.

Member Function Documentation

int madara::transport::Base::check_transport ( void  )
inlineinherited

all subclasses should call this method at the beginning of send_data

Definition at line 18 of file Transport.inl.

void madara::transport::BasicASIOTransport::close ( void  )
overridevirtualinherited

Closes this transport.

Reimplemented from madara::transport::Base.

Definition at line 38 of file BasicASIOTransport.cpp.

void madara::transport::Base::invalidate_transport ( void  )
inlineinherited

Invalidates a transport to indicate it is shutting down.

Definition at line 33 of file Transport.inl.

bool madara::transport::BroadcastTransport::pre_send_buffer ( size_t  addr_index)
inlineoverrideprotectedvirtual

Reimplemented from madara::transport::UdpTransport.

Definition at line 46 of file BroadcastTransport.h.

long madara::transport::Base::prep_send ( const knowledge::VariableReferenceMap orig_updates,
const char *  print_prefix 
)
inherited

Preps a message for sending.

Parameters
orig_updatesupdates before send filtering is applied
print_prefixprefix to include before every log message, e.g., "MyTransport::svc"
Returns
-1 Transport is shutting down
-2 Transport is invalid
-3 Unable to allocate send buffer
0 No message to send > 0 size of buffered message

filter the updates according to the filters specified by the user in QoSTransportSettings (if applicable)

size = buffer[0] (unsigned 64 bit) transport id = buffer[8] (8 byte) domain = buffer[16] (32 byte domain name) originator = buffer[48] (64 byte originator host:port) type = buffer[112] (unsigned 32 bit type of message–usually MULTIASSIGN) updates = buffer[116] (unsigned 32 bit number of updates) quality = buffer[120] (unsigned 32 bit quality of message) clock = buffer[124] (unsigned 64 bit clock for this message) ttl = buffer[132] (the new knowledge starts here) knowledge = buffer[133] (the new knowledge starts here)

Definition at line 812 of file Transport.cpp.

int madara::transport::UdpTransport::reliability ( void  ) const
inherited

Accesses reliability setting.

Returns
whether we are using reliable dissemination or not

Definition at line 23 of file UdpTransport.cpp.

int madara::transport::UdpTransport::reliability ( const int &  setting)
inherited

Sets the reliability setting.

Returns
the changed setting

Definition at line 29 of file UdpTransport.cpp.

long madara::transport::UdpTransport::send_buffer ( const udp::endpoint &  target,
const char *  buf,
size_t  size 
)
protectedinherited

Definition at line 86 of file UdpTransport.cpp.

long madara::transport::UdpTransport::send_data ( const madara::knowledge::VariableReferenceMap updates)
overridevirtualinherited

Sends a list of knowledge updates to listeners.

Parameters
updateslisting of all updates that must be sent
Returns
result of write operation or -1 if we are shutting down

Implements madara::transport::Base.

Definition at line 216 of file UdpTransport.cpp.

long madara::transport::UdpTransport::send_message ( const char *  buf,
size_t  size 
)
protectedinherited

Definition at line 129 of file UdpTransport.cpp.

madara::transport::TransportSettings & madara::transport::Base::settings ( void  )
inlineinherited

Getter for the transport settings.

Returns
the current transport settings

Definition at line 43 of file Transport.inl.

int madara::transport::BasicASIOTransport::setup ( void  )
overridevirtualinherited

all subclasses should call this method at the end of its setup

Reimplemented from madara::transport::Base.

Reimplemented in madara::transport::UdpRegistryClient, and madara::transport::UdpRegistryServer.

Definition at line 50 of file BasicASIOTransport.cpp.

int madara::transport::UdpTransport::setup_read_socket ( void  )
overrideprotectedvirtualinherited

Reimplemented from madara::transport::BasicASIOTransport.

Definition at line 48 of file UdpTransport.cpp.

int madara::transport::UdpTransport::setup_read_thread ( double  hertz,
const std::string &  name 
)
overrideprotectedvirtualinherited

Implements madara::transport::BasicASIOTransport.

Definition at line 35 of file UdpTransport.cpp.

int madara::transport::BasicASIOTransport::setup_read_threads ( )
protectedvirtualinherited

Definition at line 220 of file BasicASIOTransport.cpp.

int madara::transport::BasicASIOTransport::setup_socket ( udp::socket &  socket)
protectedvirtualinherited

Definition at line 123 of file BasicASIOTransport.cpp.

int madara::transport::BasicASIOTransport::setup_sockets ( void  )
protectedvirtualinherited

Definition at line 205 of file BasicASIOTransport.cpp.

int madara::transport::UdpTransport::setup_write_socket ( void  )
overrideprotectedvirtualinherited

Reimplemented from madara::transport::BasicASIOTransport.

Definition at line 76 of file UdpTransport.cpp.

int madara::transport::Base::validate_transport ( void  )
inlineinherited

Validates a transport to indicate it is not shutting down.

Definition at line 6 of file Transport.inl.

Member Data Documentation

std::vector<udp::endpoint> madara::transport::BasicASIOTransport::addresses_
protectedinherited

holds all multicast addresses we are sending to

Definition at line 59 of file BasicASIOTransport.h.

madara::utility::ScopedArray<char> madara::transport::Base::buffer_
protectedinherited

buffer for sending

Definition at line 154 of file Transport.h.

madara::knowledge::ThreadSafeContext& madara::transport::Base::context_
protectedinherited

Definition at line 136 of file Transport.h.

const double madara::transport::BasicASIOTransport::default_read_hertz
staticinherited

Definition at line 38 of file BasicASIOTransport.h.

HostsVector madara::transport::Base::hosts
protectedinherited

Definition at line 128 of file Transport.h.

const std::string madara::transport::Base::id_
protectedinherited

host:port identifier of this process

Definition at line 131 of file Transport.h.

asio::io_service madara::transport::BasicASIOTransport::io_service_
protectedinherited

Boost::ASIO IO context.

Definition at line 53 of file BasicASIOTransport.h.

volatile bool madara::transport::Base::is_valid_
protectedinherited

Definition at line 126 of file Transport.h.

knowledge::KnowledgeBase madara::transport::BasicASIOTransport::knowledge_
protectedinherited

knowledge base for threads to use

Definition at line 50 of file BasicASIOTransport.h.

madara::expression::ExpressionTree madara::transport::Base::on_data_received_
protectedinherited

data received rules, defined in Transport settings

Definition at line 140 of file Transport.h.

PacketScheduler madara::transport::Base::packet_scheduler_
protectedinherited

scheduler for dropping packets to simulate network issues

Definition at line 151 of file Transport.h.

threads::Threader madara::transport::BasicASIOTransport::read_threads_
protectedinherited

threads for reading knowledge updates

Definition at line 56 of file BasicASIOTransport.h.

BandwidthMonitor madara::transport::Base::receive_monitor_
protectedinherited

monitor for receiving bandwidth usage

Definition at line 148 of file Transport.h.

BandwidthMonitor madara::transport::Base::send_monitor_
protectedinherited

monitor for sending bandwidth usage

Definition at line 145 of file Transport.h.

QoSTransportSettings madara::transport::Base::settings_
protectedinherited

Definition at line 133 of file Transport.h.

volatile bool madara::transport::Base::shutting_down_
protectedinherited

Definition at line 127 of file Transport.h.

udp::socket madara::transport::BasicASIOTransport::socket_ {io_service_}
protectedinherited

underlying socket

Definition at line 62 of file BasicASIOTransport.h.


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