MADARA  3.4.1
PacketScheduler.h
Go to the documentation of this file.
1 
2 
3 #ifndef _MADARA_PACKET_SCHEDULER_H_
4 #define _MADARA_PACKET_SCHEDULER_H_
5 
14 #include <deque>
15 #include <queue>
16 #include <time.h>
17 
18 #include "madara/LockType.h"
19 #include "madara/utility/StdInt.h"
20 #include "madara/MadaraExport.h"
22 
23 class StrideTask;
24 
25 namespace madara
26 {
27 namespace transport
28 {
34 class MADARA_EXPORT PacketScheduler
35 {
36 public:
40  PacketScheduler(const QoSTransportSettings* settings = 0);
41 
46  PacketScheduler(const PacketScheduler& rhs);
47 
51  virtual ~PacketScheduler();
52 
57  void operator=(const PacketScheduler& rhs);
58 
63  bool add(void);
64 
69  void attach(const QoSTransportSettings* settings);
70 
76  uint64_t get_dropped(void);
77 
83  uint64_t get_sent(void);
84 
88  void clear(void);
89 
93  void reset(void);
94 
101  void print_status(
102  unsigned int log_level = 0, const char* prefix = "PacketScheduler");
103 
104 protected:
108  mutable MADARA_LOCK_TYPE mutex_;
109 
114 
118  uint64_t sent_messages_;
119 
124 
129 
133  std::priority_queue<StrideTask, std::vector<StrideTask> > queue_;
134 };
135 }
136 }
137 
138 #endif // _MADARA_PACKET_SCHEDULER_H_
INTERNAL USE: Task that can be added to a Stride scheduler
Provides scheduler for dropping packets.
uint64_t consecutive_drops_
Consecutive dropped messages.
std::priority_queue< StrideTask, std::vector< StrideTask > > queue_
queue used by stride scheduling algorithm
uint64_t dropped_messages_
Number of dropped messages.
uint64_t sent_messages_
Number of sent messages.
const QoSTransportSettings * settings_
Transport settings.
MADARA_LOCK_TYPE mutex_
Mutex for supporting multithreaded monitor calls.
Container for quality-of-service settings.
Copyright(c) 2020 Galois.