MADARA  3.0.11
madara::transport::NDDSTransport Class Referenceabstract

This class provides an interface into the NDDS dissemination transport. More...

#include <NddsTransport.h>

Inheritance diagram for madara::transport::NDDSTransport:
Collaboration diagram for madara::transport::NDDSTransport:

Public Types

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

Public Member Functions

 NDDSTransport (const std::string &id, knowledge::ThreadSafeContext &context, TransportSettings &config, bool launch_transport)
 Constructor. More...
 
 ~NDDSTransport ()
 Destructor. More...
 
int check_transport (void)
 all subclasses should call this method at the beginning of send_data More...
 
void close (void)
 Closes this transport. More...
 
void invalidate_transport (void)
 Invalidates a transport to indicate it is shutting down. More...
 
long prep_send (const madara::knowledge::KnowledgeRecords &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::KnowledgeRecords &updates)
 Sends a list of knowledge updates to listeners. More...
 
virtual long send_data (const madara::knowledge::KnowledgeRecords &)=0
 Sends a list of updates to the domain. More...
 
TransportSettingssettings (void)
 Getter for the transport settings. More...
 
int setup (void)
 Activates this transport. More...
 
int validate_transport (void)
 Validates a transport to indicate it is not shutting down. More...
 

Protected Attributes

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...
 
volatile bool is_valid_
 
ACE_Thread_Mutex mutex_
 
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...
 
BandwidthMonitor receive_monitor_
 monitor for receiving bandwidth usage More...
 
BandwidthMonitor send_monitor_
 monitor for sending bandwidth usage More...
 
QoSTransportSettings settings_
 
volatile bool shutting_down_
 
Condition valid_setup_
 

Private Attributes

DDSDataReader * data_reader_
 
DDSDataWriter * data_writer_
 
DDSDomainParticipant * domain_participant_
 
NDDSListenerlistener_
 
DDSPublisher * publisher_
 
DDSSubscriber * subscriber_
 
DDSTopic * update_topic_
 
NDDSKnowledgeUpdateDataWriter * update_writer_
 

Static Private Attributes

static const char * partition_ = "Madara_knowledge"
 
static const char * topic_names_ []
 

Detailed Description

This class provides an interface into the NDDS dissemination transport.

Definition at line 22 of file NddsTransport.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 68 of file Transport.h.

Constructor & Destructor Documentation

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

Constructor.

Parameters
idunique identifer - usually a combination of host:port
contextknowledge context
configtransport configuration settings
launch_transportwhether or not to launch this transport

Definition at line 19 of file NddsTransport.cpp.

madara::transport::NDDSTransport::~NDDSTransport ( )

Destructor.

Definition at line 31 of file NddsTransport.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 19 of file Transport.inl.

void madara::transport::NDDSTransport::close ( void  )
virtual

Closes this transport.

Reimplemented from madara::transport::Base.

Definition at line 37 of file NddsTransport.cpp.

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

Invalidates a transport to indicate it is shutting down.

Definition at line 34 of file Transport.inl.

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

int madara::transport::NDDSTransport::reliability ( void  ) const

Accesses reliability setting.

Returns
whether we are using reliable dissemination or not

Definition at line 90 of file NddsTransport.cpp.

int madara::transport::NDDSTransport::reliability ( const int &  setting)

Sets the reliability setting.

Returns
the changed setting

Definition at line 96 of file NddsTransport.cpp.

long madara::transport::NDDSTransport::send_data ( const madara::KnowledgeRecords &  updates)

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

get current lamport clock.

Definition at line 290 of file NddsTransport.cpp.

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

Sends a list of updates to the domain.

This function must be implemented by your transport

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

Implemented in madara::transport::UdpRegistryClient, madara::transport::UdpTransport, madara::transport::ZMQTransport, madara::transport::MulticastTransport, madara::transport::BroadcastTransport, madara::transport::UdpRegistryServer, and madara::transport::TcpTransport.

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

Getter for the transport settings.

Returns
the current transport settings

Definition at line 45 of file Transport.inl.

int madara::transport::NDDSTransport::setup ( void  )
virtual

Activates this transport.

Returns
0 for success. This function may exit the process if the OSPL daemon hasn't been started.

Reimplemented from madara::transport::Base.

Definition at line 102 of file NddsTransport.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

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

buffer for sending

Definition at line 209 of file Transport.h.

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

Definition at line 191 of file Transport.h.

DDSDataReader* madara::transport::NDDSTransport::data_reader_
private

Definition at line 83 of file NddsTransport.h.

DDSDataWriter* madara::transport::NDDSTransport::data_writer_
private

Definition at line 84 of file NddsTransport.h.

DDSDomainParticipant* madara::transport::NDDSTransport::domain_participant_
private

Definition at line 79 of file NddsTransport.h.

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

Definition at line 181 of file Transport.h.

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

host:port identifier of this process

Definition at line 186 of file Transport.h.

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

Definition at line 179 of file Transport.h.

NDDSListener* madara::transport::NDDSTransport::listener_
private

Definition at line 86 of file NddsTransport.h.

ACE_Thread_Mutex madara::transport::Base::mutex_
protectedinherited

Definition at line 182 of file Transport.h.

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

data received rules, defined in Transport settings

Definition at line 195 of file Transport.h.

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

scheduler for dropping packets to simulate network issues

Definition at line 206 of file Transport.h.

const char * madara::transport::NDDSTransport::partition_ = "Madara_knowledge"
staticprivate

Definition at line 76 of file NddsTransport.h.

DDSPublisher* madara::transport::NDDSTransport::publisher_
private

Definition at line 80 of file NddsTransport.h.

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

monitor for receiving bandwidth usage

Definition at line 203 of file Transport.h.

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

monitor for sending bandwidth usage

Definition at line 200 of file Transport.h.

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

Definition at line 188 of file Transport.h.

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

Definition at line 180 of file Transport.h.

DDSSubscriber* madara::transport::NDDSTransport::subscriber_
private

Definition at line 81 of file NddsTransport.h.

const char * madara::transport::NDDSTransport::topic_names_
staticprivate
Initial value:
= {
"MADARA_KaRL_Data",
"MADARA_KaRL_Control"
}

Definition at line 75 of file NddsTransport.h.

DDSTopic* madara::transport::NDDSTransport::update_topic_
private

Definition at line 82 of file NddsTransport.h.

NDDSKnowledgeUpdateDataWriter* madara::transport::NDDSTransport::update_writer_
private

Definition at line 85 of file NddsTransport.h.

Condition madara::transport::Base::valid_setup_
protectedinherited

Definition at line 183 of file Transport.h.


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