src/simulator/scheduler-map.cc
author Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
Tue, 06 Nov 2007 16:16:18 +0100
changeset 2084 24cfc21bda99
parent 1696 0de65f4c8c43
child 1827 bccab8f686ae
permissions -rw-r--r--
use the holland set of modes.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 132
diff changeset
     1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     2
/*
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     3
 * Copyright (c) 2006 INRIA
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     4
 *
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     6
 * it under the terms of the GNU General Public License version 2 as
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     7
 * published by the Free Software Foundation;
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     8
 *
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    12
 * GNU General Public License for more details.
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    13
 *
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    14
 * You should have received a copy of the GNU General Public License
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    15
 * along with this program; if not, write to the Free Software
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    16
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    17
 *
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    18
 * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    19
 * The idea to use a std c++ map came from GTNetS
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    20
 */
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    21
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    22
#include "scheduler-map.h"
439
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 286
diff changeset
    23
#include "scheduler-factory.h"
25
9b3bb088c560 first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 16
diff changeset
    24
#include "event-impl.h"
286
57e6a2006962 convert use of <cassert> to "ns3/assert.h"
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 231
diff changeset
    25
#include "ns3/assert.h"
631
3620e5386e0d Fixed a gcc3.4.6 error for optimized builds
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 439
diff changeset
    26
#include <string>
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    27
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    28
#define noTRACE_MAP 1
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    29
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    30
#ifdef TRACE_MAP
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    31
#include <iostream>
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    32
# define TRACE(x) \
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    33
std::cout << "MAP TRACE " << x << std::endl;
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    34
#else /* TRACE_MAP */
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    35
# define TRACE(format,...)
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    36
#endif /* TRACE_MAP */
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    37
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    38
16
99e833adbb46 change yans namespace to ns3
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 9
diff changeset
    39
namespace ns3 {
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    40
439
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 286
diff changeset
    41
static class SchedulerMapFactory : public SchedulerFactory 
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 286
diff changeset
    42
{
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 286
diff changeset
    43
public:
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 286
diff changeset
    44
  SchedulerMapFactory ()
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 286
diff changeset
    45
  {
692
3f03c8c4f381 uniformize the DefaultValues used by the Event Schedulers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 675
diff changeset
    46
    SchedulerFactory::Add (this, "Map");
439
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 286
diff changeset
    47
  }
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 286
diff changeset
    48
private:
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 286
diff changeset
    49
  virtual Scheduler *DoCreate (void) const
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 286
diff changeset
    50
  {
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 286
diff changeset
    51
    return new SchedulerMap ();
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 286
diff changeset
    52
  }
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 286
diff changeset
    53
} g_schedulerMapFactory;
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 286
diff changeset
    54
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    55
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    56
SchedulerMap::SchedulerMap ()
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    57
{}
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    58
SchedulerMap::~SchedulerMap ()
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    59
{}
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    60
194
882aa1fc50fd optimize other all comparison operators
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 185
diff changeset
    61
/* Note the invariants which this function must provide:
882aa1fc50fd optimize other all comparison operators
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 185
diff changeset
    62
 * - irreflexibility: f (x,x) is false)
882aa1fc50fd optimize other all comparison operators
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 185
diff changeset
    63
 * - antisymmetry: f(x,y) = !f(y,x)
882aa1fc50fd optimize other all comparison operators
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 185
diff changeset
    64
 * - transitivity: f(x,y) and f(y,z) => f(x,z)
882aa1fc50fd optimize other all comparison operators
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 185
diff changeset
    65
 */
882aa1fc50fd optimize other all comparison operators
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 185
diff changeset
    66
bool
196
9d243651d00c optmize std::map comparison
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 194
diff changeset
    67
SchedulerMap::EventKeyCompare::operator () (struct EventKey const&a, struct EventKey const&b)
194
882aa1fc50fd optimize other all comparison operators
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 185
diff changeset
    68
{
675
a5878de7d71c The header file ns3/cairo-wideint-private.h was added since the type int32_t was used.
Emmanuelle Laprise
parents: 631
diff changeset
    69
  if (a.m_ts < b.m_ts) 
194
882aa1fc50fd optimize other all comparison operators
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 185
diff changeset
    70
    {
882aa1fc50fd optimize other all comparison operators
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 185
diff changeset
    71
      return true;
882aa1fc50fd optimize other all comparison operators
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 185
diff changeset
    72
    } 
675
a5878de7d71c The header file ns3/cairo-wideint-private.h was added since the type int32_t was used.
Emmanuelle Laprise
parents: 631
diff changeset
    73
  else if (a.m_ts > b.m_ts)
196
9d243651d00c optmize std::map comparison
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 194
diff changeset
    74
    {
9d243651d00c optmize std::map comparison
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 194
diff changeset
    75
      return false;
9d243651d00c optmize std::map comparison
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 194
diff changeset
    76
    } 
9d243651d00c optmize std::map comparison
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 194
diff changeset
    77
  else if (a.m_uid < b.m_uid)
194
882aa1fc50fd optimize other all comparison operators
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 185
diff changeset
    78
    {
882aa1fc50fd optimize other all comparison operators
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 185
diff changeset
    79
      return true;
196
9d243651d00c optmize std::map comparison
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 194
diff changeset
    80
    }
194
882aa1fc50fd optimize other all comparison operators
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 185
diff changeset
    81
  else 
882aa1fc50fd optimize other all comparison operators
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 185
diff changeset
    82
    {
882aa1fc50fd optimize other all comparison operators
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 185
diff changeset
    83
      return false;
882aa1fc50fd optimize other all comparison operators
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 185
diff changeset
    84
    }
882aa1fc50fd optimize other all comparison operators
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 185
diff changeset
    85
}
882aa1fc50fd optimize other all comparison operators
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 185
diff changeset
    86
882aa1fc50fd optimize other all comparison operators
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 185
diff changeset
    87
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    88
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 692
diff changeset
    89
void
1009
adc3ac9baea8 optimize EventImpl refcounting
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1008
diff changeset
    90
SchedulerMap::Insert (const EventId &id)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    91
{
1008
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1005
diff changeset
    92
  // acquire a single ref
1012
7b923896f33b remove GetEventImpl
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1009
diff changeset
    93
  EventImpl *event = id.PeekEventImpl ();
7b923896f33b remove GetEventImpl
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1009
diff changeset
    94
  event->Ref ();
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 692
diff changeset
    95
  Scheduler::EventKey key;
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 692
diff changeset
    96
  key.m_ts = id.GetTs ();
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 692
diff changeset
    97
  key.m_uid = id.GetUid ();
231
8516b1203fbd remove compiler warning about unused variable when asserts are disabled.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 196
diff changeset
    98
  std::pair<EventMapI,bool> result;
8516b1203fbd remove compiler warning about unused variable when asserts are disabled.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 196
diff changeset
    99
  result = m_list.insert (std::make_pair (key, event));
286
57e6a2006962 convert use of <cassert> to "ns3/assert.h"
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 231
diff changeset
   100
  NS_ASSERT (result.second);
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   101
}
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   102
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   103
bool
1009
adc3ac9baea8 optimize EventImpl refcounting
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1008
diff changeset
   104
SchedulerMap::IsEmpty (void) const
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   105
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 132
diff changeset
   106
  return m_list.empty ();
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   107
}
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   108
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 692
diff changeset
   109
EventId
1009
adc3ac9baea8 optimize EventImpl refcounting
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1008
diff changeset
   110
SchedulerMap::PeekNext (void) const
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   111
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 132
diff changeset
   112
  EventMapCI i = m_list.begin ();
286
57e6a2006962 convert use of <cassert> to "ns3/assert.h"
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 231
diff changeset
   113
  NS_ASSERT (i != m_list.end ());
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 692
diff changeset
   114
  
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 692
diff changeset
   115
  return EventId (i->second, i->first.m_ts, i->first.m_uid);
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   116
}
1009
adc3ac9baea8 optimize EventImpl refcounting
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1008
diff changeset
   117
EventId
adc3ac9baea8 optimize EventImpl refcounting
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1008
diff changeset
   118
SchedulerMap::RemoveNext (void)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   119
{
1017
6f0bebab95c3 do not access the iterator after erasing it
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1012
diff changeset
   120
  EventMapI i = m_list.begin ();
6f0bebab95c3 do not access the iterator after erasing it
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1012
diff changeset
   121
  std::pair<Scheduler::EventKey, EventImpl*> next = *i;
6f0bebab95c3 do not access the iterator after erasing it
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1012
diff changeset
   122
  m_list.erase (i);
6f0bebab95c3 do not access the iterator after erasing it
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1012
diff changeset
   123
  return EventId (Ptr<EventImpl> (next.second, false), next.first.m_ts, next.first.m_uid);
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   124
}
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   125
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 692
diff changeset
   126
bool
1009
adc3ac9baea8 optimize EventImpl refcounting
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1008
diff changeset
   127
SchedulerMap::Remove (const EventId &id)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   128
{
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 692
diff changeset
   129
  Scheduler::EventKey key;
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 692
diff changeset
   130
  key.m_ts = id.GetTs ();
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 692
diff changeset
   131
  key.m_uid = id.GetUid ();
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 692
diff changeset
   132
  EventMapI i = m_list.find (key);
1012
7b923896f33b remove GetEventImpl
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1009
diff changeset
   133
  NS_ASSERT (i->second == id.PeekEventImpl ());
1008
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1005
diff changeset
   134
  // release single ref.
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1005
diff changeset
   135
  i->second->Unref ();
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 132
diff changeset
   136
  m_list.erase (i);
185
098b789ca5e6 do not use internal iterator void *. fix valgrind warnings
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 150
diff changeset
   137
  return true;
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   138
}
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   139
16
99e833adbb46 change yans namespace to ns3
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 9
diff changeset
   140
}; // namespace ns3