MADARA  3.2.3
Transport.h
Go to the documentation of this file.
1 #ifndef _MADARA_TRANSPORT_H_
2 #define _MADARA_TRANSPORT_H_
3 
16 #include <string>
17 #include <sstream>
18 #include <vector>
19 #include <ostream>
20 
22 #include "madara/MadaraExport.h"
24 
25 #include "ReducedMessageHeader.h"
28 
33 
34 namespace madara
35 {
36  namespace transport
37  {
45  class MADARA_EXPORT Base
46  {
47  public:
51  typedef std::vector <std::string> HostsVector;
52 
59  Base (const std::string & id, TransportSettings & new_settings,
61 
65  virtual ~Base () = 0;
66 
70  int validate_transport (void);
71 
75  virtual int setup (void);
76 
80  int check_transport (void);
81 
86  TransportSettings & settings (void);
87 
99  long prep_send (const knowledge::VariableReferenceMap & orig_updates,
100  const char * print_prefix);
101 
112  virtual long send_data (const knowledge::VariableReferenceMap &) = 0;
113 
114 
118  void invalidate_transport (void);
119 
123  virtual void close (void);
124 
125  protected:
126  volatile bool is_valid_;
127  volatile bool shutting_down_;
128  HostsVector hosts;
129 
132 
134 
135  // context for knowledge base
137 
138 #ifndef _MADARA_NO_KARL_
139  madara::expression::ExpressionTree on_data_received_;
141 
142 #endif // _MADARA_NO_KARL_
143 
146 
149 
152 
155  };
156 
188  int MADARA_EXPORT process_received_update (
189  const char * buffer,
190  uint32_t bytes_read,
191  const std::string & id,
193  const QoSTransportSettings & settings,
194  BandwidthMonitor & send_monitor,
195  BandwidthMonitor & receive_monitor,
196  knowledge::KnowledgeMap& rebroadcast_records,
197 #ifndef _MADARA_NO_KARL_
198 
199  knowledge::CompiledExpression & on_data_received,
200 #endif // _MADARA_NO_KARL_
201 
202  const char * print_prefix,
203  const char * remote_host,
204  MessageHeader *& header
205  );
206 
221  int MADARA_EXPORT prep_rebroadcast (
223  char * buffer,
224  int64_t & buffer_remaining,
225  const QoSTransportSettings & settings,
226  const char * print_prefix,
227  MessageHeader * header,
228  const knowledge::KnowledgeMap& records,
229  PacketScheduler & packet_scheduler);
230 
232  }
233 }
234 
235 #include "Transport.inl"
236 
237 #endif // _MADARA_TRANSPORT_H_
volatile bool is_valid_
Definition: Transport.h:126
QoSTransportSettings settings_
Definition: Transport.h:133
utility::ThreadSafeVector< Base * > Transports
Definition: Transport.h:231
Encapsulates a MADARA KaRL expression into an evaluatable tree.
This class stores variables and their values for use by any entity needing state information in a thr...
Provides scheduler for dropping packets.
Holds basic transport settings.
Compiled, optimized KaRL logic.
BandwidthMonitor receive_monitor_
monitor for receiving bandwidth usage
Definition: Transport.h:148
static struct madara::knowledge::tags::string_t string
volatile bool shutting_down_
Definition: Transport.h:127
::std::map< std::string, KnowledgeRecord > KnowledgeMap
const std::string id_
host:port identifier of this process
Definition: Transport.h:131
std::map< const char *, VariableReference, VariableReferenceMapCompare > VariableReferenceMap
a map of variable references
Container for quality-of-service settings.
Provides monitoring capability of a transport&#39;s bandwidth.
Manages a thread safe STL vector.
PacketScheduler packet_scheduler_
scheduler for dropping packets to simulate network issues
Definition: Transport.h:151
std::vector< std::string > HostsVector
Used to define a vector of hosts to contact.
Definition: Transport.h:51
Copyright (c) 2015 Carnegie Mellon University.
madara::utility::ScopedArray< char > buffer_
buffer for sending
Definition: Transport.h:154
int process_received_update(const char *buffer, uint32_t bytes_read, const std::string &id, knowledge::ThreadSafeContext &context, const QoSTransportSettings &settings, BandwidthMonitor &send_monitor, BandwidthMonitor &receive_monitor, knowledge::KnowledgeMap &rebroadcast_records, knowledge::CompiledExpression &on_data_received, const char *print_prefix, const char *remote_host, MessageHeader *&header)
Processes a received update, updates monitors, fills rebroadcast records according to settings filter...
Definition: Transport.cpp:109
Defines a robust message header which is the default for KaRL messages.
Definition: MessageHeader.h:57
Base class from which all transports must be derived.
Definition: Transport.h:45
int prep_rebroadcast(knowledge::ThreadSafeContext &context, char *buffer, int64_t &buffer_remaining, const QoSTransportSettings &settings, const char *print_prefix, MessageHeader *header, const knowledge::KnowledgeMap &records, PacketScheduler &packet_scheduler)
Preps a buffer for rebroadcasting records to other agents on the network.
Definition: Transport.cpp:737
BandwidthMonitor send_monitor_
monitor for sending bandwidth usage
Definition: Transport.h:145
madara::knowledge::ThreadSafeContext & context_
Definition: Transport.h:136