src/dsr/model/dsr-network-queue.cc
author Tom Henderson <tomh@tomh.org>
Sun, 13 May 2012 10:47:11 -0700
changeset 8756 9a34e618f40b
parent 8752 2da1fab73114
child 9719 4031f7fdce5c
permissions -rw-r--r--
check-style.py run on src/dsr
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
8752
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
     1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
     2
/*
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
     3
 * Copyright (c) 2011 Yufei Cheng
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
     4
 *
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
     6
 * it under the terms of the GNU General Public License version 2 as
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
     7
 * published by the Free Software Foundation;
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
     8
 *
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    12
 * GNU General Public License for more details.
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    13
 *
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    14
 * You should have received a copy of the GNU General Public License
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    15
 * along with this program; if not, write to the Free Software
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    16
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    17
 *
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    18
 * Author: Yufei Cheng   <yfcheng@ittc.ku.edu>
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    19
 *
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    20
 * James P.G. Sterbenz <jpgs@ittc.ku.edu>, director
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    21
 * ResiliNets Research Group  http://wiki.ittc.ku.edu/resilinets
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    22
 * Information and Telecommunication Technology Center (ITTC)
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    23
 * and Department of Electrical Engineering and Computer Science
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    24
 * The University of Kansas Lawrence, KS USA.
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    25
 *
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    26
 * Work supported in part by NSF FIND (Future Internet Design) Program
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    27
 * under grant CNS-0626918 (Postmodern Internet Architecture),
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    28
 * NSF grant CNS-1050226 (Multilayer Network Resilience Analysis and Experimentation on GENI),
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    29
 * US Department of Defense (DoD), and ITTC at The University of Kansas.
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    30
 */
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    31
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    32
#include "dsr-network-queue.h"
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    33
#include "ns3/test.h"
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    34
#include <algorithm>
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    35
#include <functional>
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    36
#include <map>
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    37
#include "ns3/log.h"
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    38
#include "ns3/ipv4-route.h"
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    39
#include "ns3/socket.h"
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    40
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    41
NS_LOG_COMPONENT_DEFINE ("DsrNetworkQueue");
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    42
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    43
namespace ns3 {
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    44
namespace dsr {
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    45
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    46
NS_OBJECT_ENSURE_REGISTERED (DsrNetworkQueue);
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    47
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    48
TypeId
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    49
DsrNetworkQueue::GetTypeID (void)
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    50
{
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    51
  static TypeId tid = TypeId ("ns3::dsr::DsrNetworkQueue")
8756
9a34e618f40b check-style.py run on src/dsr
Tom Henderson <tomh@tomh.org>
parents: 8752
diff changeset
    52
    .SetParent<Object> ()
9a34e618f40b check-style.py run on src/dsr
Tom Henderson <tomh@tomh.org>
parents: 8752
diff changeset
    53
    .AddConstructor<DsrNetworkQueue>  ()
9a34e618f40b check-style.py run on src/dsr
Tom Henderson <tomh@tomh.org>
parents: 8752
diff changeset
    54
  ;
8752
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    55
  return tid;
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    56
}
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    57
8756
9a34e618f40b check-style.py run on src/dsr
Tom Henderson <tomh@tomh.org>
parents: 8752
diff changeset
    58
DsrNetworkQueue::DsrNetworkQueue (uint32_t maxLen, Time maxDelay)
9a34e618f40b check-style.py run on src/dsr
Tom Henderson <tomh@tomh.org>
parents: 8752
diff changeset
    59
  : m_size (0),
9a34e618f40b check-style.py run on src/dsr
Tom Henderson <tomh@tomh.org>
parents: 8752
diff changeset
    60
    m_maxSize (maxLen),
9a34e618f40b check-style.py run on src/dsr
Tom Henderson <tomh@tomh.org>
parents: 8752
diff changeset
    61
    m_maxDelay (maxDelay)
8752
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    62
{
8756
9a34e618f40b check-style.py run on src/dsr
Tom Henderson <tomh@tomh.org>
parents: 8752
diff changeset
    63
  NS_LOG_FUNCTION (this );
8752
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    64
}
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    65
8756
9a34e618f40b check-style.py run on src/dsr
Tom Henderson <tomh@tomh.org>
parents: 8752
diff changeset
    66
DsrNetworkQueue::DsrNetworkQueue () : m_size (0)
8752
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    67
{
8756
9a34e618f40b check-style.py run on src/dsr
Tom Henderson <tomh@tomh.org>
parents: 8752
diff changeset
    68
  NS_LOG_FUNCTION (this );
8752
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    69
}
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    70
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    71
DsrNetworkQueue::~DsrNetworkQueue ()
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    72
{
8756
9a34e618f40b check-style.py run on src/dsr
Tom Henderson <tomh@tomh.org>
parents: 8752
diff changeset
    73
  NS_LOG_FUNCTION (this );
9a34e618f40b check-style.py run on src/dsr
Tom Henderson <tomh@tomh.org>
parents: 8752
diff changeset
    74
  Flush ();
8752
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    75
}
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    76
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    77
void
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    78
DsrNetworkQueue::SetMaxNetworkSize (uint32_t maxSize)
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    79
{
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    80
  m_maxSize = maxSize;
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    81
}
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    82
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    83
void
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    84
DsrNetworkQueue::SetMaxNetworkDelay (Time delay)
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    85
{
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    86
  m_maxDelay = delay;
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    87
}
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    88
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    89
uint32_t
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    90
DsrNetworkQueue::GetMaxNetworkSize (void) const
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    91
{
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    92
  return m_maxSize;
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    93
}
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    94
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    95
Time
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    96
DsrNetworkQueue::GetMaxNetworkDelay (void) const
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    97
{
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    98
  return m_maxDelay;
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
    99
}
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
   100
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
   101
bool
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
   102
DsrNetworkQueue::Enqueue (DsrNetworkQueueEntry & entry)
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
   103
{
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
   104
  NS_LOG_FUNCTION (this << m_size << m_maxSize);
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
   105
  if (m_size >= m_maxSize)
8756
9a34e618f40b check-style.py run on src/dsr
Tom Henderson <tomh@tomh.org>
parents: 8752
diff changeset
   106
    {
9a34e618f40b check-style.py run on src/dsr
Tom Henderson <tomh@tomh.org>
parents: 8752
diff changeset
   107
      return false;
9a34e618f40b check-style.py run on src/dsr
Tom Henderson <tomh@tomh.org>
parents: 8752
diff changeset
   108
    }
8752
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
   109
  Time now = Simulator::Now ();
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
   110
  entry.SetInsertedTimeStamp (now);
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
   111
  m_dsrNetworkQueue.push_back (entry);
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
   112
  m_size++;
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
   113
  NS_LOG_DEBUG ("The network queue size for now " << m_size);
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
   114
  return true;
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
   115
}
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
   116
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
   117
bool
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
   118
DsrNetworkQueue::Dequeue (DsrNetworkQueueEntry & entry)
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
   119
{
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
   120
  NS_LOG_FUNCTION (this);
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
   121
  Cleanup ();
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
   122
  std::vector<DsrNetworkQueueEntry>::iterator i = m_dsrNetworkQueue.begin ();
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
   123
  if (i == m_dsrNetworkQueue.end ())
8756
9a34e618f40b check-style.py run on src/dsr
Tom Henderson <tomh@tomh.org>
parents: 8752
diff changeset
   124
    {
9a34e618f40b check-style.py run on src/dsr
Tom Henderson <tomh@tomh.org>
parents: 8752
diff changeset
   125
      // no elements in array
9a34e618f40b check-style.py run on src/dsr
Tom Henderson <tomh@tomh.org>
parents: 8752
diff changeset
   126
      NS_LOG_DEBUG ("Does not find the queued packet in the network queue");
9a34e618f40b check-style.py run on src/dsr
Tom Henderson <tomh@tomh.org>
parents: 8752
diff changeset
   127
      return false;
9a34e618f40b check-style.py run on src/dsr
Tom Henderson <tomh@tomh.org>
parents: 8752
diff changeset
   128
    }
8752
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
   129
  entry = *i;
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
   130
  m_dsrNetworkQueue.erase (i);
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
   131
  m_size--;
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
   132
  return true;
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
   133
}
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
   134
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
   135
void
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
   136
DsrNetworkQueue::Cleanup (void)
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
   137
{
8756
9a34e618f40b check-style.py run on src/dsr
Tom Henderson <tomh@tomh.org>
parents: 8752
diff changeset
   138
  NS_LOG_FUNCTION (this);
8752
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
   139
  if (m_dsrNetworkQueue.empty ())
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
   140
    {
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
   141
      return;
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
   142
    }
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
   143
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
   144
  Time now = Simulator::Now ();
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
   145
  uint32_t n = 0;
8756
9a34e618f40b check-style.py run on src/dsr
Tom Henderson <tomh@tomh.org>
parents: 8752
diff changeset
   146
  for (std::vector<DsrNetworkQueueEntry>::iterator i = m_dsrNetworkQueue.begin (); i != m_dsrNetworkQueue.end (); )
8752
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
   147
    {
8756
9a34e618f40b check-style.py run on src/dsr
Tom Henderson <tomh@tomh.org>
parents: 8752
diff changeset
   148
      if (i->GetInsertedTimeStamp () + m_maxDelay > now)
8752
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
   149
        {
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
   150
          i++;
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
   151
        }
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
   152
      else
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
   153
        {
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
   154
          i = m_dsrNetworkQueue.erase (i);
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
   155
          n++;
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
   156
        }
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
   157
    }
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
   158
  m_size -= n;
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
   159
}
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
   160
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
   161
uint32_t
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
   162
DsrNetworkQueue::GetSize ()
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
   163
{
8756
9a34e618f40b check-style.py run on src/dsr
Tom Henderson <tomh@tomh.org>
parents: 8752
diff changeset
   164
  NS_LOG_FUNCTION (this);
8752
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
   165
  return m_size;
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
   166
}
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
   167
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
   168
void
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
   169
DsrNetworkQueue::Flush (void)
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
   170
{
8756
9a34e618f40b check-style.py run on src/dsr
Tom Henderson <tomh@tomh.org>
parents: 8752
diff changeset
   171
  NS_LOG_FUNCTION (this);
8752
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
   172
  m_dsrNetworkQueue.erase (m_dsrNetworkQueue.begin (), m_dsrNetworkQueue.end ());
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
   173
  m_size = 0;
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
   174
}
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
   175
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
   176
}  // namespace dsr
2da1fab73114 Update DSR model
Yufei Cheng <yfcheng@ittc.ku.edu>
parents:
diff changeset
   177
}  // namespace ns3