src/node/queue.h
author George Riley<riley@ece.gatech.edu>
Fri, 24 Aug 2007 11:44:11 -0400
changeset 1303 9856d1175cbb
parent 1229 e4cfe4094c10
child 1308 5c5937a4150d
permissions -rw-r--r--
Change the protocol stack processing to pass packets by non-const reference, rather than const reference and value as was previously done. Also change the queue semantics to return the packet on a deque, rather than requiring a packet as a parameter. The problem with the original approach was that packet UID's were getting skipped. The fix handles the uid properly, and we get sequential packet uid's on the trace file.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
264
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
     1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
     2
/*
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
     3
 * Copyright (c) 2007 University of Washington
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
     4
 * All rights reserved.
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
     5
 *
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
     6
 * This program is free software; you can redistribute it and/or modify
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
     7
 * it under the terms of the GNU General Public License version 2 as
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
     8
 * published by the Free Software Foundation;
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
     9
 *
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
    10
 * This program is distributed in the hope that it will be useful,
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
    11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
    12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
    13
 * GNU General Public License for more details.
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
    14
 *
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
    16
 * along with this program; if not, write to the Free Software
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
    17
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
    18
 */
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
    19
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
    20
// The queue base class does not have any limit based on the number
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
    21
// of packets or number of bytes. It is, conceptually, infinite 
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
    22
// by default. Only subclasses define limitations.
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
    23
// The base class implements tracing and basic statistics calculations.
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
    24
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
    25
#ifndef QUEUE_H
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
    26
#define QUEUE_H
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
    27
317
b5959aa4a02f fix queue tracing
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 308
diff changeset
    28
#include <string>
439
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 378
diff changeset
    29
#include <list>
264
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
    30
#include "ns3/packet.h"
710
2a9c061219a7 port code from Interface to Object
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 627
diff changeset
    31
#include "ns3/object.h"
345
47b41507a45a move channel.cc channel.h to node directory; merge ns-3-tracing from mathieu
Tom Henderson <tomh@tomh.org>
parents: 337
diff changeset
    32
#include "ns3/callback-trace-source.h"
47b41507a45a move channel.cc channel.h to node directory; merge ns-3-tracing from mathieu
Tom Henderson <tomh@tomh.org>
parents: 337
diff changeset
    33
#include "ns3/trace-resolver.h"
1227
268a9fc6f4a2 work in progress towards a working trace context
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 716
diff changeset
    34
#include "ns3/trace-context-element.h"
264
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
    35
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
    36
namespace ns3 {
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
    37
439
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 378
diff changeset
    38
class StringEnumDefaultValue;
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 378
diff changeset
    39
1229
e4cfe4094c10 build with the new TraceContextElement API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1227
diff changeset
    40
class QueueTraceType : public TraceContextElement
e4cfe4094c10 build with the new TraceContextElement API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1227
diff changeset
    41
{
e4cfe4094c10 build with the new TraceContextElement API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1227
diff changeset
    42
public:
e4cfe4094c10 build with the new TraceContextElement API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1227
diff changeset
    43
  enum Type {
e4cfe4094c10 build with the new TraceContextElement API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1227
diff changeset
    44
    ENQUEUE,
e4cfe4094c10 build with the new TraceContextElement API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1227
diff changeset
    45
    DEQUEUE,
e4cfe4094c10 build with the new TraceContextElement API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1227
diff changeset
    46
    DROP
e4cfe4094c10 build with the new TraceContextElement API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1227
diff changeset
    47
  };
e4cfe4094c10 build with the new TraceContextElement API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1227
diff changeset
    48
  static uint16_t GetUid (void);
e4cfe4094c10 build with the new TraceContextElement API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1227
diff changeset
    49
  QueueTraceType ();
e4cfe4094c10 build with the new TraceContextElement API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1227
diff changeset
    50
  QueueTraceType (enum Type type);
e4cfe4094c10 build with the new TraceContextElement API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1227
diff changeset
    51
  bool IsEnqueue (void) const;
e4cfe4094c10 build with the new TraceContextElement API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1227
diff changeset
    52
  bool IsDequeue (void) const;
e4cfe4094c10 build with the new TraceContextElement API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1227
diff changeset
    53
  bool IsDrop (void) const;
e4cfe4094c10 build with the new TraceContextElement API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1227
diff changeset
    54
  void Print (std::ostream &os) const;
e4cfe4094c10 build with the new TraceContextElement API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1227
diff changeset
    55
private:
e4cfe4094c10 build with the new TraceContextElement API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1227
diff changeset
    56
  enum Type m_type;
e4cfe4094c10 build with the new TraceContextElement API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1227
diff changeset
    57
};
e4cfe4094c10 build with the new TraceContextElement API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1227
diff changeset
    58
e4cfe4094c10 build with the new TraceContextElement API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1227
diff changeset
    59
627
f133ef9a1619 Queue dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 620
diff changeset
    60
/**
f133ef9a1619 Queue dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 620
diff changeset
    61
 * \brief Abstract base class for packet Queues
f133ef9a1619 Queue dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 620
diff changeset
    62
 * 
f133ef9a1619 Queue dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 620
diff changeset
    63
 * This class defines the base APIs for packet queues in the ns-3 system
f133ef9a1619 Queue dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 620
diff changeset
    64
 */
710
2a9c061219a7 port code from Interface to Object
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 627
diff changeset
    65
class Queue : public Object
264
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
    66
{
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
    67
public:
581
15240a33f517 make Queue derive from Interface
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 439
diff changeset
    68
  static const InterfaceId iid;
15240a33f517 make Queue derive from Interface
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 439
diff changeset
    69
345
47b41507a45a move channel.cc channel.h to node directory; merge ns-3-tracing from mathieu
Tom Henderson <tomh@tomh.org>
parents: 337
diff changeset
    70
  Queue ();
264
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
    71
  virtual ~Queue ();
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
    72
345
47b41507a45a move channel.cc channel.h to node directory; merge ns-3-tracing from mathieu
Tom Henderson <tomh@tomh.org>
parents: 337
diff changeset
    73
  TraceResolver *CreateTraceResolver (TraceContext const &context);
627
f133ef9a1619 Queue dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 620
diff changeset
    74
  
f133ef9a1619 Queue dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 620
diff changeset
    75
  /**
f133ef9a1619 Queue dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 620
diff changeset
    76
   * \return true if the queue is empty; false otherwise
f133ef9a1619 Queue dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 620
diff changeset
    77
   */
345
47b41507a45a move channel.cc channel.h to node directory; merge ns-3-tracing from mathieu
Tom Henderson <tomh@tomh.org>
parents: 337
diff changeset
    78
  bool IsEmpty (void);
627
f133ef9a1619 Queue dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 620
diff changeset
    79
  /**
f133ef9a1619 Queue dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 620
diff changeset
    80
   * Place a packet into the rear of the Queue
f133ef9a1619 Queue dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 620
diff changeset
    81
   * \return True if the operation was successful; false otherwise
f133ef9a1619 Queue dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 620
diff changeset
    82
   */
337
42102ed8ee3c Fix bug 8: Enque/Deque misspelled
Tom Henderson <tomh@tomh.org>
parents: 317
diff changeset
    83
  bool Enqueue (const Packet& p);
627
f133ef9a1619 Queue dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 620
diff changeset
    84
  /**
f133ef9a1619 Queue dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 620
diff changeset
    85
   * Remove a packet from the front of the Queue
1303
9856d1175cbb Change the protocol stack processing to pass packets by non-const
George Riley<riley@ece.gatech.edu>
parents: 1229
diff changeset
    86
   * Must not be called on an empty queue.
9856d1175cbb Change the protocol stack processing to pass packets by non-const
George Riley<riley@ece.gatech.edu>
parents: 1229
diff changeset
    87
   * \return The packet removed from the queue
627
f133ef9a1619 Queue dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 620
diff changeset
    88
   */
1303
9856d1175cbb Change the protocol stack processing to pass packets by non-const
George Riley<riley@ece.gatech.edu>
parents: 1229
diff changeset
    89
  Packet Dequeue ();
627
f133ef9a1619 Queue dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 620
diff changeset
    90
  /**
f133ef9a1619 Queue dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 620
diff changeset
    91
   * Get a copy of the item at the front of the queue without removing it
1303
9856d1175cbb Change the protocol stack processing to pass packets by non-const
George Riley<riley@ece.gatech.edu>
parents: 1229
diff changeset
    92
   * Must NOT be called on an empty queue
9856d1175cbb Change the protocol stack processing to pass packets by non-const
George Riley<riley@ece.gatech.edu>
parents: 1229
diff changeset
    93
   * \return The packet at the head of the queue.
627
f133ef9a1619 Queue dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 620
diff changeset
    94
   */
1303
9856d1175cbb Change the protocol stack processing to pass packets by non-const
George Riley<riley@ece.gatech.edu>
parents: 1229
diff changeset
    95
  Packet Peek ();
264
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
    96
627
f133ef9a1619 Queue dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 620
diff changeset
    97
  /**
f133ef9a1619 Queue dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 620
diff changeset
    98
   * XXX Doesn't do anything right now, think its supposed to flush the queue
f133ef9a1619 Queue dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 620
diff changeset
    99
   */
337
42102ed8ee3c Fix bug 8: Enque/Deque misspelled
Tom Henderson <tomh@tomh.org>
parents: 317
diff changeset
   100
  void DequeueAll (void);
627
f133ef9a1619 Queue dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 620
diff changeset
   101
  /**
f133ef9a1619 Queue dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 620
diff changeset
   102
   * \return The number of packets currently stored in the Queue
f133ef9a1619 Queue dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 620
diff changeset
   103
   */
264
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
   104
  uint32_t GetNPackets (void);
627
f133ef9a1619 Queue dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 620
diff changeset
   105
  /**
f133ef9a1619 Queue dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 620
diff changeset
   106
   * \return The number of bytes currently occupied by the packets in the Queue
f133ef9a1619 Queue dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 620
diff changeset
   107
   */
264
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
   108
  uint32_t GetNBytes (void);
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
   109
627
f133ef9a1619 Queue dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 620
diff changeset
   110
  /**
f133ef9a1619 Queue dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 620
diff changeset
   111
   * \return The total number of bytes recieved by this Queue since the
f133ef9a1619 Queue dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 620
diff changeset
   112
   * simulation began, or since ResetStatistics was called, according to 
f133ef9a1619 Queue dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 620
diff changeset
   113
   * whichever happened more recently
f133ef9a1619 Queue dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 620
diff changeset
   114
   * 
f133ef9a1619 Queue dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 620
diff changeset
   115
   */
264
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
   116
  uint32_t GetTotalReceivedBytes (void);
627
f133ef9a1619 Queue dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 620
diff changeset
   117
  /**
f133ef9a1619 Queue dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 620
diff changeset
   118
   * \return The total number of packets recieved by this Queue since the
f133ef9a1619 Queue dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 620
diff changeset
   119
   * simulation began, or since ResetStatistics was called, according to 
f133ef9a1619 Queue dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 620
diff changeset
   120
   * whichever happened more recently
f133ef9a1619 Queue dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 620
diff changeset
   121
   */
264
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
   122
  uint32_t GetTotalReceivedPackets (void);
627
f133ef9a1619 Queue dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 620
diff changeset
   123
  /**
f133ef9a1619 Queue dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 620
diff changeset
   124
   * \return The total number of bytes dropped by this Queue since the
f133ef9a1619 Queue dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 620
diff changeset
   125
   * simulation began, or since ResetStatistics was called, according to 
f133ef9a1619 Queue dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 620
diff changeset
   126
   * whichever happened more recently
f133ef9a1619 Queue dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 620
diff changeset
   127
   */
264
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
   128
  uint32_t GetTotalDroppedBytes (void);
627
f133ef9a1619 Queue dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 620
diff changeset
   129
  /**
f133ef9a1619 Queue dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 620
diff changeset
   130
   * \return The total number of bytes dropped by this Queue since the
f133ef9a1619 Queue dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 620
diff changeset
   131
   * simulation began, or since ResetStatistics was called, according to 
f133ef9a1619 Queue dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 620
diff changeset
   132
   * whichever happened more recently
f133ef9a1619 Queue dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 620
diff changeset
   133
   */
264
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
   134
  uint32_t GetTotalDroppedPackets (void);
627
f133ef9a1619 Queue dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 620
diff changeset
   135
  /**
f133ef9a1619 Queue dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 620
diff changeset
   136
   * Resets the counts for dropped packets, dropped bytes, recieved packets, and
f133ef9a1619 Queue dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 620
diff changeset
   137
   * recieved bytes.
f133ef9a1619 Queue dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 620
diff changeset
   138
   */
264
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
   139
  void ResetStatistics (void);
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
   140
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
   141
#if 0
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
   142
  // average calculation requires keeping around
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
   143
  // a buffer with the date of arrival of past received packets
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
   144
  // which are within the average window
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
   145
  // so, it is quite costly to do it all the time.
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
   146
  // Hence, it is disabled by default and must be explicitely
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
   147
  // enabled with this method which specifies the size
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
   148
  // of the average window in time units.
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
   149
  void EnableRunningAverage (Time averageWindow);
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
   150
  void DisableRunningAverage (void);
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
   151
  // average
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
   152
  double GetQueueSizeAverage (void);
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
   153
  double GetReceivedBytesPerSecondAverage (void);
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
   154
  double GetReceivedPacketsPerSecondAverage (void);
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
   155
  double GetDroppedBytesPerSecondAverage (void);
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
   156
  double GetDroppedPacketsPerSecondAverage (void);
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
   157
  // variance
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
   158
  double GetQueueSizeVariance (void);
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
   159
  double GetReceivedBytesPerSecondVariance (void);
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
   160
  double GetReceivedPacketsPerSecondVariance (void);
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
   161
  double GetDroppedBytesPerSecondVariance (void);
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
   162
  double GetDroppedPacketsPerSecondVariance (void);
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
   163
#endif
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
   164
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
   165
private:
627
f133ef9a1619 Queue dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 620
diff changeset
   166
337
42102ed8ee3c Fix bug 8: Enque/Deque misspelled
Tom Henderson <tomh@tomh.org>
parents: 317
diff changeset
   167
  virtual bool DoEnqueue (const Packet& p) = 0;
1303
9856d1175cbb Change the protocol stack processing to pass packets by non-const
George Riley<riley@ece.gatech.edu>
parents: 1229
diff changeset
   168
  virtual Packet DoDequeue () = 0;
9856d1175cbb Change the protocol stack processing to pass packets by non-const
George Riley<riley@ece.gatech.edu>
parents: 1229
diff changeset
   169
  virtual Packet DoPeek () = 0;
264
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
   170
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
   171
protected:
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
   172
  // called by subclasses to notify parent of packet drops.
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
   173
  void Drop (const Packet& p);
317
b5959aa4a02f fix queue tracing
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 308
diff changeset
   174
b5959aa4a02f fix queue tracing
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 308
diff changeset
   175
private:
345
47b41507a45a move channel.cc channel.h to node directory; merge ns-3-tracing from mathieu
Tom Henderson <tomh@tomh.org>
parents: 337
diff changeset
   176
  CallbackTraceSource<const Packet &> m_traceEnqueue;
47b41507a45a move channel.cc channel.h to node directory; merge ns-3-tracing from mathieu
Tom Henderson <tomh@tomh.org>
parents: 337
diff changeset
   177
  CallbackTraceSource<const Packet &> m_traceDequeue;
47b41507a45a move channel.cc channel.h to node directory; merge ns-3-tracing from mathieu
Tom Henderson <tomh@tomh.org>
parents: 337
diff changeset
   178
  CallbackTraceSource<const Packet &> m_traceDrop;
264
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
   179
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
   180
  uint32_t m_nBytes;
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
   181
  uint32_t m_nTotalReceivedBytes;
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
   182
  uint32_t m_nPackets;
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
   183
  uint32_t m_nTotalReceivedPackets;
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
   184
  uint32_t m_nTotalDroppedBytes;
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
   185
  uint32_t m_nTotalDroppedPackets;
317
b5959aa4a02f fix queue tracing
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 308
diff changeset
   186
375
de64c081a2e0 Make queues copyable; change p2p-topology.cc to reflect this
Tom Henderson <tomh@tomh.org>
parents: 345
diff changeset
   187
public:
627
f133ef9a1619 Queue dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 620
diff changeset
   188
  /**
f133ef9a1619 Queue dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 620
diff changeset
   189
   * A factory method to generate a preconfigured default Queue for use
f133ef9a1619 Queue dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 620
diff changeset
   190
   * \return a Queue smart pointer that is the default Queue type defined
f133ef9a1619 Queue dox
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 620
diff changeset
   191
   */
584
d843d0d5314d make Queue::CreateDefault use the ComponentManager.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 581
diff changeset
   192
  static Ptr<Queue> CreateDefault (void);
264
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
   193
};
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
   194
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
   195
}; // namespace ns3
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
   196
128d8d1bfb51 queues, trace-writer, debug
craigdo@m354-pc01.ee.washington.edu
parents:
diff changeset
   197
#endif /* QUEUE_H */