MADARA  3.2.3
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 
85 
89  void clear (void);
90 
94  void reset (void);
95 
102  void print_status (unsigned int log_level = 0,
103  const char * prefix = "PacketScheduler");
104 
105  protected:
106 
110  mutable MADARA_LOCK_TYPE mutex_;
111 
116 
120  uint64_t sent_messages_;
121 
126 
131 
135  std::priority_queue <StrideTask, std::vector <StrideTask> > queue_;
136  };
137  }
138 }
139 
140 #endif // _MADARA_PACKET_SCHEDULER_H_
std::priority_queue< StrideTask, std::vector< StrideTask > > queue_
queue used by stride scheduling algorithm
uint64_t consecutive_drops_
Consecutive dropped messages.
Provides scheduler for dropping packets.
const QoSTransportSettings * settings_
Transport settings.
uint64_t dropped_messages_
Number of dropped messages.
MADARA_LOCK_TYPE mutex_
Mutex for supporting multithreaded monitor calls.
Container for quality-of-service settings.
Copyright (c) 2015 Carnegie Mellon University.
INTERNAL USE: Task that can be added to a Stride scheduler
uint64_t sent_messages_
Number of sent messages.