MADARA  3.2.3
madara::transport::BasicASIOTransport Class Referenceabstract

#include <BasicASIOTransport.h>

Inheritance diagram for madara::transport::BasicASIOTransport:
madara::transport::Base madara::transport::UdpTransport madara::transport::BroadcastTransport madara::transport::MulticastTransport madara::transport::UdpRegistryClient madara::transport::UdpRegistryServer

Public Types

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

Public Member Functions

 BasicASIOTransport (const std::string &id, madara::knowledge::ThreadSafeContext &context, TransportSettings &config)
 
 ~BasicASIOTransport ()=0
 
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...
 
virtual long send_data (const knowledge::VariableReferenceMap &)=0
 Sends a list of updates to the domain. 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

virtual int setup_read_socket ()
 
virtual int setup_read_thread (double hertz, const std::string &name)=0
 
virtual int setup_read_threads ()
 
virtual int setup_socket (udp::socket &socket)
 
virtual int setup_sockets ()
 
virtual int setup_write_socket ()
 

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...
 

Friends

class MulticastTransportReadThread
 
class UdpTransportReadThread
 

Detailed Description

Definition at line 25 of file BasicASIOTransport.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.

Constructor & Destructor Documentation

madara::transport::BasicASIOTransport::BasicASIOTransport ( const std::string &  id,
madara::knowledge::ThreadSafeContext context,
TransportSettings config 
)

Definition at line 20 of file BasicASIOTransport.cpp.

madara::transport::BasicASIOTransport::~BasicASIOTransport ( )
pure virtual

Definition at line 32 of file BasicASIOTransport.cpp.

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  )
overridevirtual

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.

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.

virtual long madara::transport::Base::send_data ( const knowledge::VariableReferenceMap )
pure virtualinherited

Sends a list of updates to the domain.

This function must be implemented by your transport

Default implementation constructs a KnowledgeRecords object and calls the deprecated version of send_data. This is expensive, so override this version instead.

Returns
result of operation or -1 if we are shutting down

Implemented in madara::transport::ZMQTransport, madara::transport::UdpRegistryClient, madara::transport::UdpTransport, madara::transport::SpliceDDSTransport, madara::transport::UdpRegistryServer, and madara::transport::NddsTransport.

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  )
overridevirtual

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::BasicASIOTransport::setup_read_socket ( void  )
protectedvirtual
virtual int madara::transport::BasicASIOTransport::setup_read_thread ( double  hertz,
const std::string &  name 
)
protectedpure virtual
int madara::transport::BasicASIOTransport::setup_read_threads ( )
protectedvirtual

Definition at line 220 of file BasicASIOTransport.cpp.

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

Definition at line 123 of file BasicASIOTransport.cpp.

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

Definition at line 205 of file BasicASIOTransport.cpp.

int madara::transport::BasicASIOTransport::setup_write_socket ( void  )
protectedvirtual
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.

Friends And Related Function Documentation

friend class MulticastTransportReadThread
friend

Definition at line 65 of file BasicASIOTransport.h.

friend class UdpTransportReadThread
friend

Definition at line 64 of file BasicASIOTransport.h.

Member Data Documentation

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

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
static

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_
protected

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_
protected

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_
protected

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_}
protected

underlying socket

Definition at line 62 of file BasicASIOTransport.h.


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