MADARA  3.4.1
madara::transport::SharedMemoryPush Class Reference

Custom network transport generated by gpc.pl. More...

#include <SharedMemoryPush.h>

Inheritance diagram for madara::transport::SharedMemoryPush:
madara::transport::Base

Public Types

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

Public Member Functions

 SharedMemoryPush (const std::string &id, madara::transport::TransportSettings &new_settings, knowledge::KnowledgeBase &context)
 Constructor. More...
 
virtual ~SharedMemoryPush ()
 Destructor. More...
 
void add (std::vector< knowledge::KnowledgeBase > &kbs)
 Adds the list of knowledge bases to the push list. More...
 
int check_transport (void)
 all subclasses should call this method at the beginning of send_data More...
 
void clear (void)
 Clears the list of knowledge bases to push to. More...
 
virtual 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 knowledge::KnowledgeMap &orig_updates, const char *print_prefix)
 Preps a message for sending. More...
 
virtual long send_data (const knowledge::KnowledgeMap &modifieds) override
 Sends a list of updates to the domain. More...
 
void set (std::vector< knowledge::KnowledgeBase > &kbs)
 Sets the push list to the provided list of knowledge bases. More...
 
TransportSettingssettings (void)
 Getter for the transport settings. More...
 
virtual int setup (void)
 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...
 

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_
 
std::vector< knowledge::KnowledgeBasekbs_
 threads for monitoring knowledge updates 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...
 
BandwidthMonitor receive_monitor_
 monitor for receiving bandwidth usage More...
 
BandwidthMonitor send_monitor_
 monitor for sending bandwidth usage More...
 
QoSTransportSettings settings_
 
volatile bool shutting_down_
 

Detailed Description

Custom network transport generated by gpc.pl.

Definition at line 17 of file SharedMemoryPush.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

◆ SharedMemoryPush()

madara::transport::SharedMemoryPush::SharedMemoryPush ( const std::string &  id,
madara::transport::TransportSettings new_settings,
knowledge::KnowledgeBase context 
)

Constructor.

Parameters
idunique identifier (generally host:port)
new_settingssettings to apply to the transport
contextthe knowledge record context

Definition at line 6 of file SharedMemoryPush.cpp.

◆ ~SharedMemoryPush()

madara::transport::SharedMemoryPush::~SharedMemoryPush ( )
virtual

Destructor.

Definition at line 16 of file SharedMemoryPush.cpp.

Member Function Documentation

◆ add()

void madara::transport::SharedMemoryPush::add ( std::vector< knowledge::KnowledgeBase > &  kbs)
inline

Adds the list of knowledge bases to the push list.

Definition at line 46 of file SharedMemoryPush.h.

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

◆ clear()

void madara::transport::SharedMemoryPush::clear ( void  )
inline

Clears the list of knowledge bases to push to.

Definition at line 38 of file SharedMemoryPush.h.

◆ close()

void madara::transport::Base::close ( void  )
virtualinherited

Closes this transport.

Reimplemented in madara::transport::ZMQTransport, madara::transport::SpliceDDSTransport, and madara::transport::BasicASIOTransport.

Definition at line 104 of file Transport.cpp.

◆ 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()

long madara::transport::SharedMemoryPush::send_data ( const knowledge::KnowledgeMap modifieds)
overridevirtual

Sends a list of updates to the domain.

This function must be implemented by your transport

Parameters
modifiedsa list of keys to values of all records that have been updated and could be sent.
Returns
result of operation or -1 if we are shutting down

Return number of bytes sent or negative for error

  1. Apply send filters to a master list that will be applied to all kbs
  2. Apply receive filters to each kb transfer
  3. Update kbs

Implements madara::transport::Base.

Definition at line 21 of file SharedMemoryPush.cpp.

◆ set()

void madara::transport::SharedMemoryPush::set ( std::vector< knowledge::KnowledgeBase > &  kbs)
inline

Sets the push list to the provided list of knowledge bases.

Definition at line 54 of file SharedMemoryPush.h.

◆ 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::Base::setup ( void  )
virtualinherited

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

Member Data Documentation

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

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

◆ is_valid_

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

Definition at line 125 of file Transport.h.

◆ kbs_

std::vector<knowledge::KnowledgeBase> madara::transport::SharedMemoryPush::kbs_
protected

threads for monitoring knowledge updates

Definition at line 72 of file SharedMemoryPush.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.

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


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