1 #ifndef _MADARA_TRANSPORT_H_
2 #define _MADARA_TRANSPORT_H_
22 #include "madara/MadaraExport.h"
70 int validate_transport(
void);
75 virtual int setup(
void);
80 int check_transport(
void);
100 const char* print_prefix);
117 void invalidate_transport(
void);
122 virtual void close(
void);
137 #ifndef _MADARA_NO_KARL_
156 uint64_t last_toi_sent_ = 0;
195 #ifndef _MADARA_NO_KARL_
200 const char* print_prefix,
const char* remote_host,
MessageHeader*& header);
217 char* buffer, int64_t& buffer_remaining,
231 return "IDLE_OPERATION";
235 return "SENDING_OPERATION";
239 return "RECEIVING_OPERATION";
243 return "REBROADCASTING_OPERATION";
247 return "UNKNOWN_OPERATION";
Encapsulates a MADARA KaRL expression into an evaluatable tree.
Compiled, optimized KaRL logic.
This class stores variables and their values for use by any entity needing state information in a thr...
Provides monitoring capability of a transport's bandwidth.
Base class from which all transports must be derived.
madara::utility::ScopedArray< char > buffer_
buffer for sending
QoSTransportSettings settings_
madara::knowledge::ThreadSafeContext & context_
const std::string id_
host:port identifier of this process
volatile bool shutting_down_
std::vector< std::string > HostsVector
Used to define a vector of hosts to contact.
virtual long send_data(const knowledge::KnowledgeMap &)=0
Sends a list of updates to the domain.
BandwidthMonitor send_monitor_
monitor for sending bandwidth usage
PacketScheduler packet_scheduler_
scheduler for dropping packets to simulate network issues
BandwidthMonitor receive_monitor_
monitor for receiving bandwidth usage
madara::expression::ExpressionTree on_data_received_
data received rules, defined in Transport settings
Provides scheduler for dropping packets.
Container for quality-of-service settings.
Holds basic transport settings.
Manages a thread safe STL vector.
::std::map< std::string, KnowledgeRecord > KnowledgeMap
utility::ThreadSafeVector< Base * > Transports
std::string MADARA_EXPORT get_operation_type(int type)
Return the type of operation (usually from TransportContext)
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...
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.
Copyright(c) 2020 Galois.