-
Notifications
You must be signed in to change notification settings - Fork 0
/
aodv-sjf-scheduler.h
47 lines (34 loc) · 1.01 KB
/
aodv-sjf-scheduler.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
#ifndef AODV_SJF_SCHEDULER_H
#define AODV_SJF_SCHEDULER_H
#include "ns3/random-variable-stream.h"
#include "packet-scheduler-base.h"
#include <cstdint>
#include <functional>
#include <queue>
namespace ns3 {
namespace weep {
class AodvSjfScheduler : public PacketScheduler
{
public:
/**
* \brief Get the type ID.
* \return the object TypeId
*/
static TypeId GetTypeId (void);
AodvSjfScheduler ();
AodvSjfScheduler (uint32_t maxLen);
bool Enqueue (Ptr<PacketQueueEntry> entry);
void SendPacket ();
private:
/// Packet queue
std::priority_queue<std::tuple<uint32_t, uint64_t, Ptr<PacketQueueEntry>>> m_queue;
/// Random variable generator to generate jitter
Ptr<UniformRandomVariable> m_uniformRandomVariable;
/// The maximum number of packets that we allow in the scheduler queue
uint32_t m_maxLen;
};
NS_OBJECT_ENSURE_REGISTERED (AodvSjfScheduler);
} // namespace weep
} // namespace ns3
#endif /* AODV_SJF_SCHEDULER_H */