/usr/include/ns3/lte-mac-queue.h is in libns3-dev 3.13+dfsg-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 | /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/*
* Copyright (c) 2010 TELEMATICS LAB, DEE - Politecnico di Bari
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation;
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* Author: Giuseppe Piro <g.piro@poliba.it>
*/
#ifndef LTE_MAC_QUEUE_H
#define LTE_MAC_QUEUE_H
#include <queue>
#include <stdint.h>
#include "ns3/packet.h"
#include "ns3/object.h"
#include "ns3/traced-callback.h"
#include "ns3/nstime.h"
namespace ns3 {
/**
* \ingroup lte
*
* The MAC queue for each bearer
*/
class LteMacQueue : public Object
{
public:
static TypeId GetTypeId (void);
LteMacQueue (void);
/**
* Create the Mac queue defining its maximum size
* \param maxSize the maximum size of the queue
*/
LteMacQueue (uint32_t maxSize);
~LteMacQueue (void);
/**
* \brief set the maximum queue size
* \param maxSize the max queue size
*/
void SetMaxSize (uint32_t maxSize);
/**
* \return the maximum queue size
*/
uint32_t GetMaxSize (void) const;
/**
* \brief Enqueue a packet
* \param packet the packet to enqueue
*/
bool Enqueue (Ptr<Packet> packet);
/**
* \brief Dequeue a packet from the queue
* \return the first packet in the queue
*/
Ptr<Packet> Dequeue (void);
/**
* \brief Dequeue a fragment of size availableByte from the queue
* \param availableByte the size of the fragment
* \return the first packet in the queue if its size is lower than availableByte, the first availableByte of the
* first packet otherwise
*/
Ptr<Packet> Dequeue (uint32_t availableByte);
/**
* \brief Same as Dequeue but does not pop from queue
*/
Ptr<Packet> Peek (void) const;
/**
* \brief Check if there are packets into the queue
*/
bool IsEmpty (void) const;
/**
* \brief Get the size of the queue
* \return the size of the queue
*/
uint32_t GetSize (void) const;
/**
* \brief Get the number of bytes into the queue
* \return the number of bytes into the queue
*/
uint32_t GetNBytes (void) const;
/**
* \brief Get the length of the queue with MAC + RLC + CRC overhead
* \return the length of the queue with MAC + RLC + CRC overhead
*/
uint32_t GetQueueLengthWithMACOverhead (void);
private:
struct QueueElement
{
QueueElement (void);
QueueElement (Ptr<Packet> packet,
Time timeStamp);
uint32_t GetSize (void) const;
Ptr<Packet> m_packet;
Time m_timeStamp;
};
/**
* \brief Get the first element og the queue
* \return the first element og the queue
*/
LteMacQueue::QueueElement Front () const;
/**
* \brief erase the first element og the queue
*/
void Pop (void);
typedef std::deque<QueueElement> PacketQueue;
PacketQueue m_queue;
uint32_t m_maxSize;
uint32_t m_bytes;
uint32_t m_nrDataPackets;
TracedCallback<Ptr<const Packet> > m_traceEnqueue;
TracedCallback<Ptr<const Packet> > m_traceDequeue;
TracedCallback<Ptr<const Packet> > m_traceDrop;
public:
/**
* \brief Get the packet queue
* \return the apcket queue
*/
const LteMacQueue::PacketQueue & GetPacketQueue (void) const;
};
} // namespace ns3
#endif /* LTE_MAC_QUEUE_H */
|