MADARA  3.4.1
ZMQTransportReadThread.h
Go to the documentation of this file.
1 #ifndef _MADARA_ZEROMQ_TRANSPORT_READ_THREAD_H_
2 #define _MADARA_ZEROMQ_TRANSPORT_READ_THREAD_H_
3 
12 #include <string>
13 
22 
23 #include <zmq.h>
24 
25 namespace madara
26 {
27 namespace transport
28 {
35 {
36 public:
49  const std::string& id, void* write_socket, BandwidthMonitor& send_monitor,
50  BandwidthMonitor& receive_monitor, PacketScheduler& packet_scheduler);
51 
57 
61  void cleanup(void);
62 
66  void run(void);
67 
76  void rebroadcast(const char* print_prefix, MessageHeader* header,
77  const knowledge::KnowledgeMap& records);
78 
79 private:
82 
85 
88 
91 
93  void* read_socket_;
94 
95 #ifndef _MADARA_NO_KARL_
98 #endif // _MADARA_NO_KARL_
99 
102 
105 
108 
111 
114 
117 
120 
123 
126 };
127 }
128 }
129 
130 #endif // _MADARA_ZEROMQ_TRANSPORT_READ_THREAD_H_
Compiled, optimized KaRL logic.
This class provides a distributed knowledge base to users.
Definition: KnowledgeBase.h:45
This class stores variables and their values for use by any entity needing state information in a thr...
This class stores an integer within a variable context.
Definition: Integer.h:32
Abstract base class for implementing threads.
Definition: BaseThread.h:39
Provides monitoring capability of a transport's bandwidth.
Defines a robust message header which is the default for KaRL messages.
Definition: MessageHeader.h:57
Provides scheduler for dropping packets.
Container for quality-of-service settings.
Holds basic transport settings.
Thread for reading knowledge updates through a ZMQ datagram socket.
void run(void)
The main loop internals for the read thread.
void init(knowledge::KnowledgeBase &knowledge)
Initializes MADARA context-related items.
knowledge::containers::Integer failed_receives_
bad receives
const std::string id_
host:port identifier of this process
madara::utility::ScopedArray< char > buffer_
buffer for receiving
void cleanup(void)
Cleanup function called by thread manager.
BandwidthMonitor & send_monitor_
monitor for sending bandwidth usage
void * read_socket_
The multicast socket we are reading from.
knowledge::containers::Integer received_packets_
received packets
void * write_socket_
underlying socket for sending
knowledge::containers::Integer received_data_max_
max data received
ZMQTransportReadThread(const TransportSettings &settings, const std::string &id, void *write_socket, BandwidthMonitor &send_monitor, BandwidthMonitor &receive_monitor, PacketScheduler &packet_scheduler)
Constructor.
BandwidthMonitor & receive_monitor_
monitor for receiving bandwidth usage
PacketScheduler & packet_scheduler_
scheduler for mimicking target network conditions
madara::knowledge::CompiledExpression on_data_received_
data received rules, defined in Transport settings
void rebroadcast(const char *print_prefix, MessageHeader *header, const knowledge::KnowledgeMap &records)
Sends a rebroadcast packet.
const QoSTransportSettings settings_
quality-of-service transport settings
knowledge::containers::Integer received_data_
received data
knowledge::ThreadSafeContext * context_
knowledge context
knowledge::containers::Integer received_data_min_
min data received
constexpr string_t string
Provides functions and classes for the distributed knowledge base.
::std::map< std::string, KnowledgeRecord > KnowledgeMap
Copyright(c) 2020 Galois.