/usr/include/ns3.26/ns3/queue-disc-container.h is in libns3-dev 3.26+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 159 160 161 162 163 164 165 166 167 168 169 170 171 | /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/*
* Copyright (c) 2015 Universita' degli Studi di Napoli Federico II
*
* 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: Stefano Avallone <stavallo@unina.it>
*/
#ifndef QUEUE_DISC_CONTAINER_H
#define QUEUE_DISC_CONTAINER_H
#include <stdint.h>
#include <vector>
#include "ns3/queue-disc.h"
namespace ns3 {
/**
* \ingroup traffic-control
*
* \brief Holds a vector of ns3::QueueDisc pointers.
*
* Typically ns-3 QueueDiscs are installed on net devices using a traffic control
* helper. The helper Install method takes a NetDeviceContainer which holds
* some number of Ptr<NetDevice>. For each of the net devices in the
* NetDeviceContainer the helper will instantiate a queue disc and install
* it to the net device. For each of the queue discs, the helper also
* adds the queue disc into a Container for later use by the caller.
* This is that container used to hold the Ptr<QueueDisc> which are
* instantiated by the traffic control helper.
*/
class QueueDiscContainer
{
public:
/// QueueDisc container const iterator
typedef std::vector<Ptr<QueueDisc> >::const_iterator ConstIterator;
/**
* Create an empty QueueDiscContainer.
*/
QueueDiscContainer ();
/**
* \param qDisc a queue disc to add to the container
*
* Create a QueueDiscContainer with exactly one queue disc that has previously
* been instantiated
*/
QueueDiscContainer (Ptr<QueueDisc> qDisc);
/**
* \brief Get a const iterator which refers to the first QueueDisc in the
* container.
*
* QueueDiscs can be retrieved from the container in two ways. First,
* directly by an index into the container, and second, using an iterator.
* This method is used in the iterator method and is typically used in a
* for-loop to run through the QueueDiscs
*
* \code
* QueueDiscContainer::ConstIterator i;
* for (i = container.Begin (); i != container.End (); ++i)
* {
* (*i)->method (); // some QueueDisc method
* }
* \endcode
*
* \returns a const iterator which refers to the first QueueDisc in the container.
*/
ConstIterator Begin (void) const;
/**
* \brief Get a const iterator which indicates past-the-last QueueDisc in the
* container.
*
* QueueDiscs can be retrieved from the container in two ways. First,
* directly by an index into the container, and second, using an iterator.
* This method is used in the iterator method and is typically used in a
* for-loop to run through the QueueDiscs
*
* \code
* QueueDiscContainer::ConstIterator i;
* for (i = container.Begin (); i != container.End (); ++i)
* {
* (*i)->method (); // some QueueDisc method
* }
* \endcode
*
* \returns a const iterator which indicates an ending condition for a loop.
*/
ConstIterator End (void) const;
/**
* \brief Get the number of Ptr<QueueDisc> stored in this container.
*
* QueueDiscs can be retrieved from the container in two ways. First,
* directly by an index into the container, and second, using an iterator.
* This method is used in the direct method and is typically used to
* define an ending condition in a for-loop that runs through the stored
* QueueDiscs
*
* \code
* uint32_t nQueueDiscs = container.GetN ();
* for (uint32_t i = 0 i < nQueueDiscs; ++i)
* {
* Ptr<QueueDisc> p = container.Get (i)
* i->method (); // some QueueDisc method
* }
* \endcode
*
* \returns the number of Ptr<QueueDisc> stored in this container.
*/
uint32_t GetN (void) const;
/**
* \brief Get the Ptr<QueueDisc> stored in this container at a given
* index.
*
* QueueDiscs can be retrieved from the container in two ways. First,
* directly by an index into the container, and second, using an iterator.
* This method is used in the direct method and is used to retrieve the
* indexed Ptr<QueueDisc>.
*
* \code
* uint32_t nQueueDiscs = container.GetN ();
* for (uint32_t i = 0 i < nQueueDiscs; ++i)
* {
* Ptr<QueueDisc> p = container.Get (i)
* i->method (); // some QueueDisc method
* }
* \endcode
*
* \param i the index of the requested queue disc pointer.
* \returns the requested queue disc pointer.
*/
Ptr<QueueDisc> Get (uint32_t i) const;
/**
* \brief Append the contents of another QueueDiscContainer to the end of
* this container.
*
* \param other The QueueDiscContainer to append.
*/
void Add (QueueDiscContainer other);
/**
* \brief Append a single Ptr<QueueDisc> to this container.
*
* \param qDisc The Ptr<QueueDisc> to append.
*/
void Add (Ptr<QueueDisc> qDisc);
private:
std::vector<Ptr<QueueDisc> > m_queueDiscs; //!< QueueDiscs smart pointers
};
} // namespace ns3
#endif /* QUEUE_DISC_CONTAINER_H */
|