MADARA  3.4.1
SpliceTransportReadThread.h
Go to the documentation of this file.
1 #ifndef SPLICE_TRANSPORT_READ_THREAD_H
2 #define SPLICE_TRANSPORT_READ_THREAD_H
3 
12 #include <string>
13 
21 
22 #include "ccpp_dds_dcps.h"
23 #include "madara/transport/splice/ccpp_SpliceKnowledgeUpdate.h"
24 
25 namespace madara
26 {
27 namespace transport
28 {
34 {
35 public:
48  SpliceReadThread(const std::string& id, const TransportSettings& settings,
50  Knowledge::UpdateDataReader_ptr& update_reader,
51  Knowledge::UpdateDataWriter_ptr& update_writer,
52  BandwidthMonitor& send_monitor, BandwidthMonitor& receive_monitor,
53  PacketScheduler& packet_scheduler);
54 
60 
64  void cleanup(void);
65 
69  void run(void);
70 
79  void rebroadcast(const char* print_prefix, MessageHeader* header,
80  const knowledge::KnowledgeMap& records);
81 
87  ::std::vector< ::std::string> assignment_symbols_;
88 
93 
98 
103 
107  ::Knowledge::UpdateDataReader_var update_reader_;
108 
112  ::Knowledge::UpdateDataWriter_var update_writer_;
113 
116 
119 
122 
125 
128 };
129 }
130 }
131 
132 #endif
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...
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.
Thread for reading knowledge updates via waitsets.
knowledge::CompiledExpression on_data_received_
data received rules, defined in Transport settings
PacketScheduler & packet_scheduler_
scheduler for mimicking target network conditions
knowledge::ThreadSafeContext * context_
The knowledge context that we will be updating.
void cleanup(void)
Cleanup function called by thread manager.
SpliceReadThread(const std::string &id, const TransportSettings &settings, knowledge::ThreadSafeContext &context, Knowledge::UpdateDataReader_ptr &update_reader, Knowledge::UpdateDataWriter_ptr &update_writer, BandwidthMonitor &send_monitor, BandwidthMonitor &receive_monitor, PacketScheduler &packet_scheduler)
Constructor.
::Knowledge::UpdateDataWriter_var update_writer_
The DDS data writer that we can write to.
BandwidthMonitor & send_monitor_
monitor for sending bandwidth usage
void init(knowledge::KnowledgeBase &knowledge)
Initializes MADARA context-related items.
madara::utility::ScopedArray< char > buffer_
buffer for receiving
::std::vector< ::std::string > assignment_symbols_
We currently allow multiassignments completely through the key.
BandwidthMonitor & receive_monitor_
monitor for receiving bandwidth usage
void run(void)
The main loop internals for the read thread.
void rebroadcast(const char *print_prefix, MessageHeader *header, const knowledge::KnowledgeMap &records)
Sends a rebroadcast packet.
const QoSTransportSettings settings_
Transport settings.
const std::string id_
Unique identifier for this entity (e.g., host:port)
::Knowledge::UpdateDataReader_var update_reader_
The DDS data reader that we will take from.
Holds basic transport settings.
constexpr string_t string
Provides functions and classes for the distributed knowledge base.
::std::map< std::string, KnowledgeRecord > KnowledgeMap
Copyright(c) 2020 Galois.