MADARA  3.4.1
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...
 
const std::vector< udp::endpoint > & get_udp_endpoints (void)
 
void invalidate_transport (void)
 Invalidates a transport to indicate it is shutting down. More...
 
long prep_send (const knowledge::KnowledgeMap &orig_updates, const char *print_prefix)
 Preps a message for sending. More...
 
virtual long send_data (const knowledge::KnowledgeMap &)=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...
 
uint64_t last_toi_sent_ = 0
 Latest TOI the previous send operation included. 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

◆ HostsVector

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

◆ BasicASIOTransport()

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

Definition at line 22 of file BasicASIOTransport.cpp.

◆ ~BasicASIOTransport()

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

Definition at line 33 of file BasicASIOTransport.cpp.

Member Function Documentation

◆ check_transport()

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

all subclasses should call this method at the beginning of send_data

Definition at line 17 of file Transport.inl.

◆ close()

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

Closes this transport.

Reimplemented from madara::transport::Base.

Definition at line 38 of file BasicASIOTransport.cpp.

◆ get_udp_endpoints()

const std::vector<udp::endpoint>& madara::transport::BasicASIOTransport::get_udp_endpoints ( void  )
inline

Definition at line 39 of file BasicASIOTransport.h.

◆ invalidate_transport()

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

Invalidates a transport to indicate it is shutting down.

Definition at line 31 of file Transport.inl.

◆ prep_send()

long madara::transport::Base::prep_send ( const knowledge::KnowledgeMap 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 860 of file Transport.cpp.

◆ send_data()

virtual long madara::transport::Base::send_data ( const knowledge::KnowledgeMap )
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::UdpTransport, madara::transport::UdpRegistryServer, madara::transport::UdpRegistryClient, madara::transport::SpliceDDSTransport, and madara::transport::SharedMemoryPush.

◆ settings()

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

Getter for the transport settings.

Returns
the current transport settings

Definition at line 40 of file Transport.inl.

◆ setup()

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::UdpRegistryServer, and madara::transport::UdpRegistryClient.

Definition at line 49 of file BasicASIOTransport.cpp.

◆ setup_read_socket()

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

◆ setup_read_thread()

virtual int madara::transport::BasicASIOTransport::setup_read_thread ( double  hertz,
const std::string &  name 
)
protectedpure virtual

◆ setup_read_threads()

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

Definition at line 233 of file BasicASIOTransport.cpp.

◆ setup_socket()

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

Definition at line 134 of file BasicASIOTransport.cpp.

◆ setup_sockets()

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

Definition at line 217 of file BasicASIOTransport.cpp.

◆ setup_write_socket()

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

◆ validate_transport()

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

◆ MulticastTransportReadThread

friend class MulticastTransportReadThread
friend

Definition at line 69 of file BasicASIOTransport.h.

◆ UdpTransportReadThread

friend class UdpTransportReadThread
friend

Definition at line 68 of file BasicASIOTransport.h.

Member Data Documentation

◆ addresses_

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

holds all multicast addresses we are sending to

Definition at line 63 of file BasicASIOTransport.h.

◆ buffer_

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

buffer for sending

Definition at line 153 of file Transport.h.

◆ context_

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

Definition at line 135 of file Transport.h.

◆ default_read_hertz

const double madara::transport::BasicASIOTransport::default_read_hertz
static

Definition at line 37 of file BasicASIOTransport.h.

◆ hosts

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

Definition at line 127 of file Transport.h.

◆ id_

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

host:port identifier of this process

Definition at line 130 of file Transport.h.

◆ io_service_

asio::io_service madara::transport::BasicASIOTransport::io_service_
protected

Boost::ASIO IO context.

Definition at line 57 of file BasicASIOTransport.h.

◆ is_valid_

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

Definition at line 125 of file Transport.h.

◆ knowledge_

knowledge::KnowledgeBase madara::transport::BasicASIOTransport::knowledge_
protected

knowledge base for threads to use

Definition at line 54 of file BasicASIOTransport.h.

◆ last_toi_sent_

uint64_t madara::transport::Base::last_toi_sent_ = 0
protectedinherited

Latest TOI the previous send operation included.

Definition at line 156 of file Transport.h.

◆ on_data_received_

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

data received rules, defined in Transport settings

Definition at line 139 of file Transport.h.

◆ packet_scheduler_

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

scheduler for dropping packets to simulate network issues

Definition at line 150 of file Transport.h.

◆ read_threads_

threads::Threader madara::transport::BasicASIOTransport::read_threads_
protected

threads for reading knowledge updates

Definition at line 60 of file BasicASIOTransport.h.

◆ receive_monitor_

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

monitor for receiving bandwidth usage

Definition at line 147 of file Transport.h.

◆ send_monitor_

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

monitor for sending bandwidth usage

Definition at line 144 of file Transport.h.

◆ settings_

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

Definition at line 132 of file Transport.h.

◆ shutting_down_

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

Definition at line 126 of file Transport.h.

◆ socket_

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

underlying socket

Definition at line 66 of file BasicASIOTransport.h.


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