src/simulator/simulator.cc
author Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
Thu, 10 Apr 2008 11:50:08 -0700
changeset 2943 cdbcd43a019c
parent 2927 73b47ce1d805
child 2965 4b28e9740e3b
permissions -rw-r--r--
add a few missing ns3:: prefixes in TypeId names.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
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) 2005,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
 */
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
#include "simulator.h"
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    22
#include "scheduler.h"
25
9b3bb088c560 first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 24
diff changeset
    23
#include "event-impl.h"
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    24
1008
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1005
diff changeset
    25
#include "ns3/ptr.h"
2927
73b47ce1d805 get rid of implicit conversion of Attribute to/from Ptr<>. Replace this with an explicit Pointer class.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2901
diff changeset
    26
#include "ns3/pointer.h"
439
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 336
diff changeset
    27
#include "ns3/assert.h"
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 336
diff changeset
    28
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 336
diff changeset
    29
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    30
#include <math.h>
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    31
#include <fstream>
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    32
#include <list>
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    33
#include <vector>
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    34
#include <iostream>
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    35
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    36
#define noTRACE_SIMU 1
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
#ifdef TRACE_SIMU
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    39
#include <iostream>
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    40
# define TRACE(x) \
213
1e6d6776b284 fix trace output
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 209
diff changeset
    41
std::cout << "SIMU TRACE " << Simulator::Now () << " " << x << std::endl;
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    42
# define TRACE_S(x) \
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    43
std::cout << "SIMU TRACE " << x << std::endl;
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    44
#else /* TRACE_SIMU */
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    45
# define TRACE(format,...)
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    46
# define TRACE_S(format,...)
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    47
#endif /* TRACE_SIMU */
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    48
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    49
16
99e833adbb46 change yans namespace to ns3
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 14
diff changeset
    50
namespace ns3 {
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    51
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    52
2943
cdbcd43a019c add a few missing ns3:: prefixes in TypeId names.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2927
diff changeset
    53
/**
cdbcd43a019c add a few missing ns3:: prefixes in TypeId names.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2927
diff changeset
    54
 * \brief private implementation detail of the Simulator API.
cdbcd43a019c add a few missing ns3:: prefixes in TypeId names.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2927
diff changeset
    55
 */
2559
ab98bf436a17 do not use DefaultValues in simulator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2503
diff changeset
    56
class SimulatorPrivate : public Object
ab98bf436a17 do not use DefaultValues in simulator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2503
diff changeset
    57
{
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    58
public:
2559
ab98bf436a17 do not use DefaultValues in simulator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2503
diff changeset
    59
  static TypeId GetTypeId (void);
ab98bf436a17 do not use DefaultValues in simulator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2503
diff changeset
    60
ab98bf436a17 do not use DefaultValues in simulator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2503
diff changeset
    61
  SimulatorPrivate ();
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
    62
  ~SimulatorPrivate ();
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    63
2901
81ac5e25e8c2 Make sure that we really attempt to destroy everything upon process exit. Gets rid of spurious leak reports in valgrind.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2630
diff changeset
    64
  void Destroy ();
81ac5e25e8c2 Make sure that we really attempt to destroy everything upon process exit. Gets rid of spurious leak reports in valgrind.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2630
diff changeset
    65
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
    66
  void EnableLogTo (char const *filename);
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    67
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
    68
  bool IsFinished (void) const;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
    69
  Time Next (void) const;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
    70
  void Stop (void);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
    71
  void StopAt (Time const &time);
1010
3a252ceeac44 more optimizations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1009
diff changeset
    72
  EventId Schedule (Time const &time, const Ptr<EventImpl> &event);
3a252ceeac44 more optimizations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1009
diff changeset
    73
  EventId ScheduleNow (const Ptr<EventImpl> &event);
3a252ceeac44 more optimizations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1009
diff changeset
    74
  EventId ScheduleDestroy (const Ptr<EventImpl> &event);
1011
7e5be9b118c9 be more consistant in the handling of references
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1010
diff changeset
    75
  void Remove (const EventId &ev);
7e5be9b118c9 be more consistant in the handling of references
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1010
diff changeset
    76
  void Cancel (const EventId &ev);
1690
16b198d63c1e add Simulator::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1522
diff changeset
    77
  bool IsExpired (const EventId &ev) const;
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
    78
  void Run (void);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
    79
  Time Now (void) const;
1690
16b198d63c1e add Simulator::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1522
diff changeset
    80
  Time GetDelayLeft (const EventId &id) const;
1863
50fa1ca3b26c bug 104: add a method to retrive the maximum simulation time.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1696
diff changeset
    81
  Time GetMaximumSimulationTime (void) const;
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    82
2559
ab98bf436a17 do not use DefaultValues in simulator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2503
diff changeset
    83
  void SetScheduler (Ptr<Scheduler> scheduler);
ab98bf436a17 do not use DefaultValues in simulator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2503
diff changeset
    84
  Ptr<Scheduler> GetScheduler (void) const;
ab98bf436a17 do not use DefaultValues in simulator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2503
diff changeset
    85
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    86
private:
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
    87
  void ProcessOneEvent (void);
675
a5878de7d71c The header file ns3/cairo-wideint-private.h was added since the type int32_t was used.
Emmanuelle Laprise
parents: 523
diff changeset
    88
  uint64_t NextTs (void) const;
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    89
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
    90
  typedef std::list<EventId> DestroyEvents;
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
    91
  DestroyEvents m_destroyEvents;
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
    92
  uint64_t m_stopAt;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
    93
  bool m_stop;
2559
ab98bf436a17 do not use DefaultValues in simulator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2503
diff changeset
    94
  Ptr<Scheduler> m_events;
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
    95
  uint32_t m_uid;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
    96
  uint32_t m_currentUid;
675
a5878de7d71c The header file ns3/cairo-wideint-private.h was added since the type int32_t was used.
Emmanuelle Laprise
parents: 523
diff changeset
    97
  uint64_t m_currentTs;
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
    98
  std::ofstream m_log;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
    99
  std::ifstream m_inputLog;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   100
  bool m_logEnable;
336
9dd9a53188bc add consistency checks. Based on patch by Gustavo Carneiro
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 286
diff changeset
   101
  // number of events that have been inserted but not yet scheduled,
9dd9a53188bc add consistency checks. Based on patch by Gustavo Carneiro
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 286
diff changeset
   102
  // not counting the "destroy" events; this is used for validation
9dd9a53188bc add consistency checks. Based on patch by Gustavo Carneiro
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 286
diff changeset
   103
  int m_unscheduledEvents;
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   104
};
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   105
2943
cdbcd43a019c add a few missing ns3:: prefixes in TypeId names.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2927
diff changeset
   106
NS_OBJECT_ENSURE_REGISTERED (SimulatorPrivate);
cdbcd43a019c add a few missing ns3:: prefixes in TypeId names.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2927
diff changeset
   107
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   108
2559
ab98bf436a17 do not use DefaultValues in simulator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2503
diff changeset
   109
TypeId
ab98bf436a17 do not use DefaultValues in simulator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2503
diff changeset
   110
SimulatorPrivate::GetTypeId (void)
ab98bf436a17 do not use DefaultValues in simulator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2503
diff changeset
   111
{
2943
cdbcd43a019c add a few missing ns3:: prefixes in TypeId names.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2927
diff changeset
   112
  static TypeId tid = TypeId ("ns3::SimulatorPrivate")
2559
ab98bf436a17 do not use DefaultValues in simulator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2503
diff changeset
   113
    .SetParent<Object> ()
ab98bf436a17 do not use DefaultValues in simulator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2503
diff changeset
   114
    .AddConstructor<SimulatorPrivate> ()
ab98bf436a17 do not use DefaultValues in simulator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2503
diff changeset
   115
    .AddAttribute ("Scheduler",
ab98bf436a17 do not use DefaultValues in simulator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2503
diff changeset
   116
                   "XXX",
2927
73b47ce1d805 get rid of implicit conversion of Attribute to/from Ptr<>. Replace this with an explicit Pointer class.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2901
diff changeset
   117
                   Pointer (),
2559
ab98bf436a17 do not use DefaultValues in simulator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2503
diff changeset
   118
                   // XXX: allow getting the scheduler too.
2927
73b47ce1d805 get rid of implicit conversion of Attribute to/from Ptr<>. Replace this with an explicit Pointer class.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2901
diff changeset
   119
                   MakePointerAccessor (&SimulatorPrivate::SetScheduler),
73b47ce1d805 get rid of implicit conversion of Attribute to/from Ptr<>. Replace this with an explicit Pointer class.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2901
diff changeset
   120
                   MakePointerChecker<Scheduler> ())
2559
ab98bf436a17 do not use DefaultValues in simulator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2503
diff changeset
   121
    ;
ab98bf436a17 do not use DefaultValues in simulator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2503
diff changeset
   122
  return tid;
ab98bf436a17 do not use DefaultValues in simulator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2503
diff changeset
   123
}
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   124
2559
ab98bf436a17 do not use DefaultValues in simulator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2503
diff changeset
   125
SimulatorPrivate::SimulatorPrivate ()
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   126
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   127
  m_stop = false;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   128
  m_stopAt = 0;
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   129
  // uids are allocated from 4.
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   130
  // uid 0 is "invalid" events
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   131
  // uid 1 is "now" events
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   132
  // uid 2 is "destroy" events
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   133
  m_uid = 4; 
200
46031a283b0d We need to make sure that the uid of the first event generated is different from the uid of the simulator when no events have yet been run.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 198
diff changeset
   134
  // before ::Run is entered, the m_currentUid will be zero
46031a283b0d We need to make sure that the uid of the first event generated is different from the uid of the simulator when no events have yet been run.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 198
diff changeset
   135
  m_currentUid = 0;
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   136
  m_logEnable = false;
675
a5878de7d71c The header file ns3/cairo-wideint-private.h was added since the type int32_t was used.
Emmanuelle Laprise
parents: 523
diff changeset
   137
  m_currentTs = 0;
336
9dd9a53188bc add consistency checks. Based on patch by Gustavo Carneiro
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 286
diff changeset
   138
  m_unscheduledEvents = 0;
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   139
}
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   140
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   141
SimulatorPrivate::~SimulatorPrivate ()
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   142
{
2901
81ac5e25e8c2 Make sure that we really attempt to destroy everything upon process exit. Gets rid of spurious leak reports in valgrind.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2630
diff changeset
   143
  while (!m_events->IsEmpty ())
81ac5e25e8c2 Make sure that we really attempt to destroy everything upon process exit. Gets rid of spurious leak reports in valgrind.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2630
diff changeset
   144
    {
81ac5e25e8c2 Make sure that we really attempt to destroy everything upon process exit. Gets rid of spurious leak reports in valgrind.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2630
diff changeset
   145
      EventId next = m_events->RemoveNext ();
81ac5e25e8c2 Make sure that we really attempt to destroy everything upon process exit. Gets rid of spurious leak reports in valgrind.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2630
diff changeset
   146
    }
81ac5e25e8c2 Make sure that we really attempt to destroy everything upon process exit. Gets rid of spurious leak reports in valgrind.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2630
diff changeset
   147
  m_events = 0;
81ac5e25e8c2 Make sure that we really attempt to destroy everything upon process exit. Gets rid of spurious leak reports in valgrind.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2630
diff changeset
   148
}
81ac5e25e8c2 Make sure that we really attempt to destroy everything upon process exit. Gets rid of spurious leak reports in valgrind.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2630
diff changeset
   149
void
81ac5e25e8c2 Make sure that we really attempt to destroy everything upon process exit. Gets rid of spurious leak reports in valgrind.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2630
diff changeset
   150
SimulatorPrivate::Destroy ()
81ac5e25e8c2 Make sure that we really attempt to destroy everything upon process exit. Gets rid of spurious leak reports in valgrind.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2630
diff changeset
   151
{
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   152
  while (!m_destroyEvents.empty ()) 
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   153
    {
1012
7b923896f33b remove GetEventImpl
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   154
      Ptr<EventImpl> ev = m_destroyEvents.front ().PeekEventImpl ();
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   155
      m_destroyEvents.pop_front ();
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   156
      TRACE ("handle destroy " << ev);
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   157
      if (!ev->IsCancelled ())
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   158
        {
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   159
          ev->Invoke ();
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   160
        }
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   161
    }
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   162
}
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   163
2559
ab98bf436a17 do not use DefaultValues in simulator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2503
diff changeset
   164
void
ab98bf436a17 do not use DefaultValues in simulator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2503
diff changeset
   165
SimulatorPrivate::SetScheduler (Ptr<Scheduler> scheduler)
ab98bf436a17 do not use DefaultValues in simulator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2503
diff changeset
   166
{
ab98bf436a17 do not use DefaultValues in simulator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2503
diff changeset
   167
  if (m_events != 0)
ab98bf436a17 do not use DefaultValues in simulator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2503
diff changeset
   168
    {
ab98bf436a17 do not use DefaultValues in simulator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2503
diff changeset
   169
      while (!m_events->IsEmpty ())
ab98bf436a17 do not use DefaultValues in simulator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2503
diff changeset
   170
        {
ab98bf436a17 do not use DefaultValues in simulator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2503
diff changeset
   171
          EventId next = m_events->RemoveNext ();
ab98bf436a17 do not use DefaultValues in simulator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2503
diff changeset
   172
          scheduler->Insert (next);
ab98bf436a17 do not use DefaultValues in simulator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2503
diff changeset
   173
        }
ab98bf436a17 do not use DefaultValues in simulator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2503
diff changeset
   174
    }
ab98bf436a17 do not use DefaultValues in simulator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2503
diff changeset
   175
  m_events = scheduler;
ab98bf436a17 do not use DefaultValues in simulator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2503
diff changeset
   176
}
ab98bf436a17 do not use DefaultValues in simulator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2503
diff changeset
   177
ab98bf436a17 do not use DefaultValues in simulator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2503
diff changeset
   178
Ptr<Scheduler>
ab98bf436a17 do not use DefaultValues in simulator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2503
diff changeset
   179
SimulatorPrivate::GetScheduler (void) const
ab98bf436a17 do not use DefaultValues in simulator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2503
diff changeset
   180
{
ab98bf436a17 do not use DefaultValues in simulator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2503
diff changeset
   181
  return m_events;
ab98bf436a17 do not use DefaultValues in simulator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2503
diff changeset
   182
}
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   183
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   184
void
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   185
SimulatorPrivate::EnableLogTo (char const *filename)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   186
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   187
  m_log.open (filename);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   188
  m_logEnable = true;
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   189
}
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   190
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   191
void
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   192
SimulatorPrivate::ProcessOneEvent (void)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   193
{
1009
adc3ac9baea8 optimize EventImpl refcounting
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1008
diff changeset
   194
  EventId next = m_events->RemoveNext ();
336
9dd9a53188bc add consistency checks. Based on patch by Gustavo Carneiro
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 286
diff changeset
   195
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   196
  NS_ASSERT (next.GetTs () >= m_currentTs);
336
9dd9a53188bc add consistency checks. Based on patch by Gustavo Carneiro
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 286
diff changeset
   197
  --m_unscheduledEvents;
9dd9a53188bc add consistency checks. Based on patch by Gustavo Carneiro
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 286
diff changeset
   198
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   199
  TRACE ("handle " << nextEv);
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   200
  m_currentTs = next.GetTs ();
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   201
  m_currentUid = next.GetUid ();
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   202
  if (m_logEnable) 
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   203
    {
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   204
      m_log << "e "<<next.GetUid () << " " << next.GetTs () << std::endl;
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   205
    }
1009
adc3ac9baea8 optimize EventImpl refcounting
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1008
diff changeset
   206
  EventImpl *event = next.PeekEventImpl ();
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   207
  event->Invoke ();
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   208
}
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   209
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   210
bool 
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   211
SimulatorPrivate::IsFinished (void) const
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   212
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   213
  return m_events->IsEmpty ();
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   214
}
143
552ff26b4224 new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 129
diff changeset
   215
uint64_t
675
a5878de7d71c The header file ns3/cairo-wideint-private.h was added since the type int32_t was used.
Emmanuelle Laprise
parents: 523
diff changeset
   216
SimulatorPrivate::NextTs (void) const
143
552ff26b4224 new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 129
diff changeset
   217
{
286
57e6a2006962 convert use of <cassert> to "ns3/assert.h"
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 213
diff changeset
   218
  NS_ASSERT (!m_events->IsEmpty ());
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   219
  EventId id = m_events->PeekNext ();
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   220
  return id.GetTs ();
143
552ff26b4224 new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 129
diff changeset
   221
}
25
9b3bb088c560 first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 24
diff changeset
   222
Time
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   223
SimulatorPrivate::Next (void) const
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   224
{
675
a5878de7d71c The header file ns3/cairo-wideint-private.h was added since the type int32_t was used.
Emmanuelle Laprise
parents: 523
diff changeset
   225
  return TimeStep (NextTs ());
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   226
}
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   227
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   228
void
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   229
SimulatorPrivate::Run (void)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   230
{
143
552ff26b4224 new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 129
diff changeset
   231
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   232
  while (!m_events->IsEmpty () && !m_stop && 
675
a5878de7d71c The header file ns3/cairo-wideint-private.h was added since the type int32_t was used.
Emmanuelle Laprise
parents: 523
diff changeset
   233
         (m_stopAt == 0 || m_stopAt > NextTs ())) 
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   234
    {
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   235
      ProcessOneEvent ();
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   236
    }
336
9dd9a53188bc add consistency checks. Based on patch by Gustavo Carneiro
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 286
diff changeset
   237
9dd9a53188bc add consistency checks. Based on patch by Gustavo Carneiro
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 286
diff changeset
   238
  // If the simulator stopped naturally by lack of events, make a
9dd9a53188bc add consistency checks. Based on patch by Gustavo Carneiro
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 286
diff changeset
   239
  // consistency test to check that we didn't lose any events along the way.
9dd9a53188bc add consistency checks. Based on patch by Gustavo Carneiro
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 286
diff changeset
   240
  NS_ASSERT(!m_events->IsEmpty () || m_unscheduledEvents == 0);
9dd9a53188bc add consistency checks. Based on patch by Gustavo Carneiro
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 286
diff changeset
   241
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   242
  m_log.close ();
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   243
}
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   244
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   245
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   246
void 
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   247
SimulatorPrivate::Stop (void)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   248
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   249
  m_stop = true;
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   250
}
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   251
void 
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   252
SimulatorPrivate::StopAt (Time const &at)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   253
{
286
57e6a2006962 convert use of <cassert> to "ns3/assert.h"
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 213
diff changeset
   254
  NS_ASSERT (at.IsPositive ());
675
a5878de7d71c The header file ns3/cairo-wideint-private.h was added since the type int32_t was used.
Emmanuelle Laprise
parents: 523
diff changeset
   255
  m_stopAt = at.GetTimeStep ();
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   256
}
25
9b3bb088c560 first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 24
diff changeset
   257
EventId
1010
3a252ceeac44 more optimizations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1009
diff changeset
   258
SimulatorPrivate::Schedule (Time const &time, const Ptr<EventImpl> &event)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   259
{
286
57e6a2006962 convert use of <cassert> to "ns3/assert.h"
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 213
diff changeset
   260
  NS_ASSERT (time.IsPositive ());
675
a5878de7d71c The header file ns3/cairo-wideint-private.h was added since the type int32_t was used.
Emmanuelle Laprise
parents: 523
diff changeset
   261
  NS_ASSERT (time >= TimeStep (m_currentTs));
a5878de7d71c The header file ns3/cairo-wideint-private.h was added since the type int32_t was used.
Emmanuelle Laprise
parents: 523
diff changeset
   262
  uint64_t ts = (uint64_t) time.GetTimeStep ();
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   263
  EventId id (event, ts, m_uid);
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   264
  if (m_logEnable) 
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   265
    {
675
a5878de7d71c The header file ns3/cairo-wideint-private.h was added since the type int32_t was used.
Emmanuelle Laprise
parents: 523
diff changeset
   266
      m_log << "i "<<m_currentUid<<" "<<m_currentTs<<" "
a5878de7d71c The header file ns3/cairo-wideint-private.h was added since the type int32_t was used.
Emmanuelle Laprise
parents: 523
diff changeset
   267
            <<m_uid<<" "<<time.GetTimeStep () << std::endl;
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   268
    }
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   269
  m_uid++;
336
9dd9a53188bc add consistency checks. Based on patch by Gustavo Carneiro
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 286
diff changeset
   270
  ++m_unscheduledEvents;
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   271
  m_events->Insert (id);
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   272
  return id;
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   273
}
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   274
EventId
1010
3a252ceeac44 more optimizations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1009
diff changeset
   275
SimulatorPrivate::ScheduleNow (const Ptr<EventImpl> &event)
145
947b77174b72 start of work to re-implement Schedule* methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 144
diff changeset
   276
{
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   277
  EventId id (event, m_currentTs, m_uid);
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   278
  if (m_logEnable) 
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   279
    {
675
a5878de7d71c The header file ns3/cairo-wideint-private.h was added since the type int32_t was used.
Emmanuelle Laprise
parents: 523
diff changeset
   280
      m_log << "i "<<m_currentUid<<" "<<m_currentTs<<" "
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   281
            <<m_uid<<" "<<m_currentTs << std::endl;
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   282
    }
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   283
  m_uid++;
336
9dd9a53188bc add consistency checks. Based on patch by Gustavo Carneiro
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 286
diff changeset
   284
  ++m_unscheduledEvents;
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   285
  m_events->Insert (id);
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   286
  return id;
145
947b77174b72 start of work to re-implement Schedule* methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 144
diff changeset
   287
}
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   288
EventId
1010
3a252ceeac44 more optimizations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1009
diff changeset
   289
SimulatorPrivate::ScheduleDestroy (const Ptr<EventImpl> &event)
145
947b77174b72 start of work to re-implement Schedule* methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 144
diff changeset
   290
{
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   291
  EventId id (event, m_currentTs, 2);
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   292
  m_destroyEvents.push_back (id);
147
705658c244c3 implement ScheduleNow and ScheduleDestroy methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   293
  if (m_logEnable) 
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   294
  {
675
a5878de7d71c The header file ns3/cairo-wideint-private.h was added since the type int32_t was used.
Emmanuelle Laprise
parents: 523
diff changeset
   295
    m_log << "id " << m_currentUid << " " << Now ().GetTimeStep () << " "
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   296
          << m_uid << std::endl;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   297
  }
147
705658c244c3 implement ScheduleNow and ScheduleDestroy methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   298
  m_uid++;
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   299
  return id;
145
947b77174b72 start of work to re-implement Schedule* methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 144
diff changeset
   300
}
947b77174b72 start of work to re-implement Schedule* methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 144
diff changeset
   301
25
9b3bb088c560 first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 24
diff changeset
   302
Time
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   303
SimulatorPrivate::Now (void) const
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   304
{
675
a5878de7d71c The header file ns3/cairo-wideint-private.h was added since the type int32_t was used.
Emmanuelle Laprise
parents: 523
diff changeset
   305
  return TimeStep (m_currentTs);
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   306
}
1690
16b198d63c1e add Simulator::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1522
diff changeset
   307
Time 
16b198d63c1e add Simulator::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1522
diff changeset
   308
SimulatorPrivate::GetDelayLeft (const EventId &id) const
16b198d63c1e add Simulator::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1522
diff changeset
   309
{
16b198d63c1e add Simulator::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1522
diff changeset
   310
  if (IsExpired (id))
16b198d63c1e add Simulator::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1522
diff changeset
   311
    {
16b198d63c1e add Simulator::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1522
diff changeset
   312
      return TimeStep (0);
16b198d63c1e add Simulator::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1522
diff changeset
   313
    }
16b198d63c1e add Simulator::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1522
diff changeset
   314
  else
16b198d63c1e add Simulator::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1522
diff changeset
   315
    {
16b198d63c1e add Simulator::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1522
diff changeset
   316
      return TimeStep (id.GetTs () - m_currentTs);
16b198d63c1e add Simulator::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1522
diff changeset
   317
    }
16b198d63c1e add Simulator::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1522
diff changeset
   318
}
25
9b3bb088c560 first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 24
diff changeset
   319
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   320
void
1011
7e5be9b118c9 be more consistant in the handling of references
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1010
diff changeset
   321
SimulatorPrivate::Remove (const EventId &ev)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   322
{
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   323
  if (ev.GetUid () == 2)
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   324
    {
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   325
      // destroy events.
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   326
      for (DestroyEvents::iterator i = m_destroyEvents.begin (); i != m_destroyEvents.end (); i++)
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   327
        {
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   328
          if (*i == ev)
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   329
            {
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   330
              m_destroyEvents.erase (i);
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   331
              break;
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   332
            }
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   333
         }
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   334
      return;
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   335
    }
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   336
  if (IsExpired (ev))
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   337
    {
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   338
      return;
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   339
    }
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   340
  m_events->Remove (ev);
1008
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1005
diff changeset
   341
  Cancel (ev);
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   342
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   343
  if (m_logEnable) 
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   344
    {
675
a5878de7d71c The header file ns3/cairo-wideint-private.h was added since the type int32_t was used.
Emmanuelle Laprise
parents: 523
diff changeset
   345
      m_log << "r " << m_currentUid << " " << m_currentTs << " "
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   346
            << ev.GetUid () << " " << ev.GetTs () << std::endl;
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   347
    }
336
9dd9a53188bc add consistency checks. Based on patch by Gustavo Carneiro
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 286
diff changeset
   348
  --m_unscheduledEvents;
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   349
}
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   350
25
9b3bb088c560 first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 24
diff changeset
   351
void
1011
7e5be9b118c9 be more consistant in the handling of references
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1010
diff changeset
   352
SimulatorPrivate::Cancel (const EventId &id)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   353
{
1008
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1005
diff changeset
   354
  if (!IsExpired (id))
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1005
diff changeset
   355
    {
1012
7b923896f33b remove GetEventImpl
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   356
      id.PeekEventImpl ()->Cancel ();
1008
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1005
diff changeset
   357
    }
25
9b3bb088c560 first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 24
diff changeset
   358
}
9b3bb088c560 first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 24
diff changeset
   359
9b3bb088c560 first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 24
diff changeset
   360
bool
1690
16b198d63c1e add Simulator::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1522
diff changeset
   361
SimulatorPrivate::IsExpired (const EventId &ev) const
25
9b3bb088c560 first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 24
diff changeset
   362
{
964
e49de7414508 make sure IsExpired handles destroy events correctly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   363
  if (ev.GetUid () == 2)
e49de7414508 make sure IsExpired handles destroy events correctly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   364
    {
e49de7414508 make sure IsExpired handles destroy events correctly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   365
      // destroy events.
1690
16b198d63c1e add Simulator::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1522
diff changeset
   366
      for (DestroyEvents::const_iterator i = m_destroyEvents.begin (); i != m_destroyEvents.end (); i++)
964
e49de7414508 make sure IsExpired handles destroy events correctly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   367
        {
e49de7414508 make sure IsExpired handles destroy events correctly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   368
          if (*i == ev)
e49de7414508 make sure IsExpired handles destroy events correctly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   369
            {
e49de7414508 make sure IsExpired handles destroy events correctly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   370
              return false;
e49de7414508 make sure IsExpired handles destroy events correctly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   371
            }
e49de7414508 make sure IsExpired handles destroy events correctly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   372
         }
e49de7414508 make sure IsExpired handles destroy events correctly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   373
      return true;
e49de7414508 make sure IsExpired handles destroy events correctly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   374
    }
1012
7b923896f33b remove GetEventImpl
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   375
  if (ev.PeekEventImpl () == 0 ||
675
a5878de7d71c The header file ns3/cairo-wideint-private.h was added since the type int32_t was used.
Emmanuelle Laprise
parents: 523
diff changeset
   376
      ev.GetTs () < m_currentTs ||
a5878de7d71c The header file ns3/cairo-wideint-private.h was added since the type int32_t was used.
Emmanuelle Laprise
parents: 523
diff changeset
   377
      (ev.GetTs () == m_currentTs &&
209
8b343b9727d7 fix EventId::IsExpired and Simulator::IsExpired, add EventId::IsRunning, add relevant tests, replace Seconds, MilliSeconds, MicroSeconds, and, NanoSeconds classes by functions named similarly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 200
diff changeset
   378
       ev.GetUid () <= m_currentUid) ||
1012
7b923896f33b remove GetEventImpl
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   379
      ev.PeekEventImpl ()->IsCancelled ()) 
209
8b343b9727d7 fix EventId::IsExpired and Simulator::IsExpired, add EventId::IsRunning, add relevant tests, replace Seconds, MilliSeconds, MicroSeconds, and, NanoSeconds classes by functions named similarly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 200
diff changeset
   380
    {
8b343b9727d7 fix EventId::IsExpired and Simulator::IsExpired, add EventId::IsRunning, add relevant tests, replace Seconds, MilliSeconds, MicroSeconds, and, NanoSeconds classes by functions named similarly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 200
diff changeset
   381
      return true;
8b343b9727d7 fix EventId::IsExpired and Simulator::IsExpired, add EventId::IsRunning, add relevant tests, replace Seconds, MilliSeconds, MicroSeconds, and, NanoSeconds classes by functions named similarly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 200
diff changeset
   382
    }
8b343b9727d7 fix EventId::IsExpired and Simulator::IsExpired, add EventId::IsRunning, add relevant tests, replace Seconds, MilliSeconds, MicroSeconds, and, NanoSeconds classes by functions named similarly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 200
diff changeset
   383
  else
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   384
    {
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   385
      return false;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   386
    }
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   387
}
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   388
1863
50fa1ca3b26c bug 104: add a method to retrive the maximum simulation time.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1696
diff changeset
   389
Time 
50fa1ca3b26c bug 104: add a method to retrive the maximum simulation time.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1696
diff changeset
   390
SimulatorPrivate::GetMaximumSimulationTime (void) const
50fa1ca3b26c bug 104: add a method to retrive the maximum simulation time.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1696
diff changeset
   391
{
50fa1ca3b26c bug 104: add a method to retrive the maximum simulation time.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1696
diff changeset
   392
  // XXX: I am fairly certain other compilers use other non-standard
50fa1ca3b26c bug 104: add a method to retrive the maximum simulation time.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1696
diff changeset
   393
  // post-fixes to indicate 64 bit constants.
50fa1ca3b26c bug 104: add a method to retrive the maximum simulation time.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1696
diff changeset
   394
  return TimeStep (0x7fffffffffffffffLL);
50fa1ca3b26c bug 104: add a method to retrive the maximum simulation time.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1696
diff changeset
   395
}
50fa1ca3b26c bug 104: add a method to retrive the maximum simulation time.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1696
diff changeset
   396
50fa1ca3b26c bug 104: add a method to retrive the maximum simulation time.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1696
diff changeset
   397
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   398
16
99e833adbb46 change yans namespace to ns3
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 14
diff changeset
   399
}; // namespace ns3
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   400
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   401
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   402
#include "scheduler-list.h"
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   403
#include "scheduler-heap.h"
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   404
#include "scheduler-map.h"
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   405
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   406
16
99e833adbb46 change yans namespace to ns3
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 14
diff changeset
   407
namespace ns3 {
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   408
2901
81ac5e25e8c2 Make sure that we really attempt to destroy everything upon process exit. Gets rid of spurious leak reports in valgrind.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2630
diff changeset
   409
Ptr<SimulatorPrivate> Simulator::m_priv = 0;
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   410
2559
ab98bf436a17 do not use DefaultValues in simulator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2503
diff changeset
   411
void Simulator::SetScheduler (Ptr<Scheduler> scheduler)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   412
{
2559
ab98bf436a17 do not use DefaultValues in simulator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2503
diff changeset
   413
  GetPriv ()->SetScheduler (scheduler);
45
f963078c6e95 enable user-provided schedulers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 38
diff changeset
   414
}
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   415
void Simulator::EnableLogTo (char const *filename)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   416
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   417
  GetPriv ()->EnableLogTo (filename);
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   418
}
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   419
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   420
2901
81ac5e25e8c2 Make sure that we really attempt to destroy everything upon process exit. Gets rid of spurious leak reports in valgrind.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2630
diff changeset
   421
Ptr<SimulatorPrivate>
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   422
Simulator::GetPriv (void)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   423
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   424
  if (m_priv == 0) 
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   425
    {
2901
81ac5e25e8c2 Make sure that we really attempt to destroy everything upon process exit. Gets rid of spurious leak reports in valgrind.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2630
diff changeset
   426
      m_priv = CreateObject<SimulatorPrivate> ();
2559
ab98bf436a17 do not use DefaultValues in simulator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2503
diff changeset
   427
      Ptr<Scheduler> scheduler = CreateObject<SchedulerMap> ();
ab98bf436a17 do not use DefaultValues in simulator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2503
diff changeset
   428
      m_priv->SetScheduler (scheduler);
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   429
    }
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   430
  TRACE_S ("priv " << m_priv);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   431
  return m_priv;
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   432
}
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   433
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   434
void
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   435
Simulator::Destroy (void)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   436
{
2901
81ac5e25e8c2 Make sure that we really attempt to destroy everything upon process exit. Gets rid of spurious leak reports in valgrind.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2630
diff changeset
   437
  if (m_priv == 0)
81ac5e25e8c2 Make sure that we really attempt to destroy everything upon process exit. Gets rid of spurious leak reports in valgrind.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2630
diff changeset
   438
    {
81ac5e25e8c2 Make sure that we really attempt to destroy everything upon process exit. Gets rid of spurious leak reports in valgrind.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2630
diff changeset
   439
      return;
81ac5e25e8c2 Make sure that we really attempt to destroy everything upon process exit. Gets rid of spurious leak reports in valgrind.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2630
diff changeset
   440
    }
81ac5e25e8c2 Make sure that we really attempt to destroy everything upon process exit. Gets rid of spurious leak reports in valgrind.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2630
diff changeset
   441
  m_priv->Destroy ();
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   442
  m_priv = 0;
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   443
}
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   444
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   445
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   446
bool 
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   447
Simulator::IsFinished (void)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   448
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   449
  return GetPriv ()->IsFinished ();
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   450
}
25
9b3bb088c560 first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 24
diff changeset
   451
Time
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   452
Simulator::Next (void)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   453
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   454
  return GetPriv ()->Next ();
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   455
}
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   456
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   457
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   458
void 
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   459
Simulator::Run (void)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   460
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   461
  GetPriv ()->Run ();
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   462
}
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   463
void 
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   464
Simulator::Stop (void)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   465
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   466
  TRACE ("stop");
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   467
  GetPriv ()->Stop ();
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   468
}
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   469
void 
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   470
Simulator::StopAt (Time const &at)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   471
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   472
  GetPriv ()->StopAt (at);
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   473
}
25
9b3bb088c560 first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 24
diff changeset
   474
Time
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   475
Simulator::Now (void)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   476
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   477
  return GetPriv ()->Now ();
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   478
}
1690
16b198d63c1e add Simulator::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1522
diff changeset
   479
Time
16b198d63c1e add Simulator::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1522
diff changeset
   480
Simulator::GetDelayLeft (const EventId &id)
16b198d63c1e add Simulator::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1522
diff changeset
   481
{
16b198d63c1e add Simulator::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1522
diff changeset
   482
  return GetPriv ()->GetDelayLeft (id);
16b198d63c1e add Simulator::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1522
diff changeset
   483
}
25
9b3bb088c560 first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 24
diff changeset
   484
1008
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1005
diff changeset
   485
Ptr<EventImpl>
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   486
Simulator::MakeEvent (void (*f) (void))
145
947b77174b72 start of work to re-implement Schedule* methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 144
diff changeset
   487
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   488
    // zero arg version
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   489
  class EventFunctionImpl0 : public EventImpl {
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   490
  public:
1008
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1005
diff changeset
   491
    typedef void (*F)(void);
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   492
      
1008
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1005
diff changeset
   493
    EventFunctionImpl0 (F function) 
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1005
diff changeset
   494
      : m_function (function)
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1005
diff changeset
   495
    {}
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1005
diff changeset
   496
    virtual ~EventFunctionImpl0 () {}
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   497
  protected:
1008
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1005
diff changeset
   498
    virtual void Notify (void) { 
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1005
diff changeset
   499
      (*m_function) (); 
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1005
diff changeset
   500
    }
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   501
  private:
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   502
  	F m_function;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   503
  } *ev = new EventFunctionImpl0 (f);
1008
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1005
diff changeset
   504
  return Ptr<EventImpl> (ev, false);
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   505
}
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   506
EventId
1010
3a252ceeac44 more optimizations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1009
diff changeset
   507
Simulator::Schedule (Time const &time, const Ptr<EventImpl> &ev)
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   508
{
162
5b398ac221c7 make Time relative instead of Absolute
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 150
diff changeset
   509
  return GetPriv ()->Schedule (Now () + time, ev);
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   510
}
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   511
EventId
1010
3a252ceeac44 more optimizations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1009
diff changeset
   512
Simulator::ScheduleNow (const Ptr<EventImpl> &ev)
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   513
{
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   514
  return GetPriv ()->ScheduleNow (ev);
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   515
}
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   516
EventId
1010
3a252ceeac44 more optimizations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1009
diff changeset
   517
Simulator::ScheduleDestroy (const Ptr<EventImpl> &ev)
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   518
{
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   519
  return GetPriv ()->ScheduleDestroy (ev);
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   520
}  
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   521
EventId
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   522
Simulator::Schedule (Time const &time, void (*f) (void))
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   523
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   524
  return Schedule (time, MakeEvent (f));
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   525
}
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   526
EventId
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   527
Simulator::ScheduleNow (void (*f) (void))
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   528
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   529
  return ScheduleNow (MakeEvent (f));
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   530
}
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   531
EventId
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   532
Simulator::ScheduleDestroy (void (*f) (void))
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   533
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   534
  return ScheduleDestroy (MakeEvent (f));
75
0f3f4b0a158b reorganize the implementation of template member methods in Simulator class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 54
diff changeset
   535
}
0f3f4b0a158b reorganize the implementation of template member methods in Simulator class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 54
diff changeset
   536
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   537
25
9b3bb088c560 first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 24
diff changeset
   538
void
1011
7e5be9b118c9 be more consistant in the handling of references
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1010
diff changeset
   539
Simulator::Remove (const EventId &ev)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   540
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   541
  return GetPriv ()->Remove (ev);
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   542
}
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   543
25
9b3bb088c560 first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 24
diff changeset
   544
void
1011
7e5be9b118c9 be more consistant in the handling of references
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1010
diff changeset
   545
Simulator::Cancel (const EventId &ev)
25
9b3bb088c560 first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 24
diff changeset
   546
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   547
  return GetPriv ()->Cancel (ev);
25
9b3bb088c560 first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 24
diff changeset
   548
}
9b3bb088c560 first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 24
diff changeset
   549
bool 
1011
7e5be9b118c9 be more consistant in the handling of references
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1010
diff changeset
   550
Simulator::IsExpired (const EventId &id)
25
9b3bb088c560 first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 24
diff changeset
   551
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   552
  return GetPriv ()->IsExpired (id);
25
9b3bb088c560 first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 24
diff changeset
   553
}
9b3bb088c560 first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 24
diff changeset
   554
679
0c4773ca0f29 avoid cyclic dependency between Simulator and Time code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 675
diff changeset
   555
Time Now (void)
0c4773ca0f29 avoid cyclic dependency between Simulator and Time code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 675
diff changeset
   556
{
0c4773ca0f29 avoid cyclic dependency between Simulator and Time code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 675
diff changeset
   557
  return Time (Simulator::Now ());
0c4773ca0f29 avoid cyclic dependency between Simulator and Time code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 675
diff changeset
   558
}
0c4773ca0f29 avoid cyclic dependency between Simulator and Time code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 675
diff changeset
   559
1863
50fa1ca3b26c bug 104: add a method to retrive the maximum simulation time.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1696
diff changeset
   560
Time 
50fa1ca3b26c bug 104: add a method to retrive the maximum simulation time.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1696
diff changeset
   561
Simulator::GetMaximumSimulationTime (void)
50fa1ca3b26c bug 104: add a method to retrive the maximum simulation time.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1696
diff changeset
   562
{
50fa1ca3b26c bug 104: add a method to retrive the maximum simulation time.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1696
diff changeset
   563
  return GetPriv ()->GetMaximumSimulationTime ();
50fa1ca3b26c bug 104: add a method to retrive the maximum simulation time.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1696
diff changeset
   564
}
50fa1ca3b26c bug 104: add a method to retrive the maximum simulation time.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1696
diff changeset
   565
50fa1ca3b26c bug 104: add a method to retrive the maximum simulation time.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1696
diff changeset
   566
} // namespace ns3
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   567
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   568
30
eb38b7903dfb add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 29
diff changeset
   569
#ifdef RUN_SELF_TESTS
eb38b7903dfb add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 29
diff changeset
   570
eb38b7903dfb add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 29
diff changeset
   571
#include "ns3/test.h"
690
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
   572
#include "ns3/ptr.h"
30
eb38b7903dfb add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 29
diff changeset
   573
eb38b7903dfb add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 29
diff changeset
   574
namespace ns3 {
eb38b7903dfb add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 29
diff changeset
   575
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   576
static void foo0 (void)
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   577
{}
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   578
static void foo1 (int)
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   579
{}
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   580
static void foo2 (int, int)
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   581
{}
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   582
static void foo3 (int, int, int)
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   583
{}
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   584
static void foo4 (int, int, int, int)
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   585
{}
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   586
static void foo5 (int, int, int, int, int)
945
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   587
{}
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   588
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   589
#if 1
945
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   590
static void ber1 (int &)
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   591
{}
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   592
static void ber2 (int &, int &)
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   593
{}
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   594
static void ber3 (int &, int &, int &)
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   595
{}
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   596
static void ber4 (int &, int &, int &, int &)
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   597
{}
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   598
static void ber5 (int &, int &, int &, int &, int &)
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   599
{}
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   600
#endif
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   601
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   602
static void cber1 (const int &)
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   603
{}
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   604
static void cber2 (const int &, const int &)
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   605
{}
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   606
static void cber3 (const int &, const int &, const int &)
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   607
{}
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   608
static void cber4 (const int &, const int &, const int &, const int &)
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   609
{}
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   610
static void cber5 (const int &, const int &, const int &, const int &, const int &)
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   611
{}
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   612
  
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   613
2630
17b545238ab3 do not use ObjectBase as a base class.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2577
diff changeset
   614
class SimulatorTests : public Test
17b545238ab3 do not use ObjectBase as a base class.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2577
diff changeset
   615
{
30
eb38b7903dfb add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 29
diff changeset
   616
public:
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   617
  SimulatorTests ();
690
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
   618
  // only here for testing of Ptr<>
1296
173efb6d92d8 fix last errors for new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1294
diff changeset
   619
  void Ref (void) const;
173efb6d92d8 fix last errors for new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1294
diff changeset
   620
  void Unref (void) const;
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   621
  virtual ~SimulatorTests ();
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   622
  virtual bool RunTests (void);
31
2def0da92178 add simulator tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 30
diff changeset
   623
private:
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   624
  uint64_t NowUs ();
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   625
  bool RunOneTest (void);
1294
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   626
  void RunTestsConst (void) const;
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   627
  void A (int a);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   628
  void B (int b);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   629
  void C (int c);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   630
  void D (int d);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   631
  void bar0 (void);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   632
  void bar1 (int);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   633
  void bar2 (int, int);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   634
  void bar3 (int, int, int);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   635
  void bar4 (int, int, int, int);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   636
  void bar5 (int, int, int, int, int);
945
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   637
  void baz1 (int &);
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   638
  void baz2 (int &, int &);
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   639
  void baz3 (int &, int &, int &);
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   640
  void baz4 (int &, int &, int &, int &);
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   641
  void baz5 (int &, int &, int &, int &, int &);
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   642
  void cbaz1 (const int &);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   643
  void cbaz2 (const int &, const int &);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   644
  void cbaz3 (const int &, const int &, const int &);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   645
  void cbaz4 (const int &, const int &, const int &, const int &);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   646
  void cbaz5 (const int &, const int &, const int &, const int &, const int &);
1294
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   647
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   648
  void bar0c (void) const;
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   649
  void bar1c (int) const;
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   650
  void bar2c (int, int) const;
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   651
  void bar3c (int, int, int) const;
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   652
  void bar4c (int, int, int, int) const;
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   653
  void bar5c (int, int, int, int, int) const;
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   654
  void baz1c (int &) const;
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   655
  void baz2c (int &, int &) const;
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   656
  void baz3c (int &, int &, int &) const;
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   657
  void baz4c (int &, int &, int &, int &) const;
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   658
  void baz5c (int &, int &, int &, int &, int &) const;
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   659
  void cbaz1c (const int &) const;
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   660
  void cbaz2c (const int &, const int &) const;
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   661
  void cbaz3c (const int &, const int &, const int &) const;
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   662
  void cbaz4c (const int &, const int &, const int &, const int &) const;
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   663
  void cbaz5c (const int &, const int &, const int &, const int &, const int &) const;
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   664
964
e49de7414508 make sure IsExpired handles destroy events correctly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   665
  void destroy (void);
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   666
  
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   667
  bool m_b;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   668
  bool m_a;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   669
  bool m_c;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   670
  bool m_d;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   671
  EventId m_idC;
964
e49de7414508 make sure IsExpired handles destroy events correctly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   672
  bool m_destroy;
e49de7414508 make sure IsExpired handles destroy events correctly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   673
  EventId m_destroyId;
30
eb38b7903dfb add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 29
diff changeset
   674
};
eb38b7903dfb add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 29
diff changeset
   675
eb38b7903dfb add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 29
diff changeset
   676
SimulatorTests::SimulatorTests ()
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   677
  : Test ("Simulator")
30
eb38b7903dfb add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 29
diff changeset
   678
{}
eb38b7903dfb add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 29
diff changeset
   679
SimulatorTests::~SimulatorTests ()
eb38b7903dfb add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 29
diff changeset
   680
{}
690
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
   681
void 
1296
173efb6d92d8 fix last errors for new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1294
diff changeset
   682
SimulatorTests::Ref (void) const
690
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
   683
{}
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
   684
void 
1296
173efb6d92d8 fix last errors for new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1294
diff changeset
   685
SimulatorTests::Unref (void) const
690
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
   686
{}
143
552ff26b4224 new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 129
diff changeset
   687
uint64_t
552ff26b4224 new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 129
diff changeset
   688
SimulatorTests::NowUs (void)
552ff26b4224 new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 129
diff changeset
   689
{
163
2a7e05018eeb rename Time::ApproximateTo methods to Time::Get
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 162
diff changeset
   690
  uint64_t ns = Now ().GetNanoSeconds ();
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   691
  return ns / 1000;
143
552ff26b4224 new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 129
diff changeset
   692
}  
31
2def0da92178 add simulator tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 30
diff changeset
   693
void
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   694
SimulatorTests::A (int a)
31
2def0da92178 add simulator tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 30
diff changeset
   695
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   696
  m_a = false;
31
2def0da92178 add simulator tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 30
diff changeset
   697
}
2def0da92178 add simulator tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 30
diff changeset
   698
void
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   699
SimulatorTests::B (int b)
31
2def0da92178 add simulator tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 30
diff changeset
   700
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   701
  if (b != 2 || NowUs () != 11) 
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   702
    {
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   703
      m_b = false;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   704
    } 
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   705
  else 
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   706
    {
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   707
      m_b = true;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   708
    }
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   709
  Simulator::Remove (m_idC);
162
5b398ac221c7 make Time relative instead of Absolute
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 150
diff changeset
   710
  Simulator::Schedule (MicroSeconds (10), &SimulatorTests::D, this, 4);
31
2def0da92178 add simulator tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 30
diff changeset
   711
}
2def0da92178 add simulator tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 30
diff changeset
   712
void
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   713
SimulatorTests::C (int c)
31
2def0da92178 add simulator tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 30
diff changeset
   714
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   715
  m_c = false;
31
2def0da92178 add simulator tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 30
diff changeset
   716
}
32
789f69e312bf more tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 31
diff changeset
   717
void
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   718
SimulatorTests::D (int d)
32
789f69e312bf more tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 31
diff changeset
   719
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   720
  if (d != 4 || NowUs () != (11+10)) 
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   721
    {
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   722
      m_d = false;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   723
    } 
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   724
  else 
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   725
    {
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   726
      m_d = true;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   727
    }
32
789f69e312bf more tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 31
diff changeset
   728
}
964
e49de7414508 make sure IsExpired handles destroy events correctly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   729
void
e49de7414508 make sure IsExpired handles destroy events correctly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   730
SimulatorTests::destroy (void)
e49de7414508 make sure IsExpired handles destroy events correctly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   731
{
e49de7414508 make sure IsExpired handles destroy events correctly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   732
  if (m_destroyId.IsExpired ())
e49de7414508 make sure IsExpired handles destroy events correctly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   733
    {
e49de7414508 make sure IsExpired handles destroy events correctly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   734
      m_destroy = true; 
e49de7414508 make sure IsExpired handles destroy events correctly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   735
    }
e49de7414508 make sure IsExpired handles destroy events correctly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   736
}
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   737
void 
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   738
SimulatorTests::bar0 (void)
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   739
{}
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   740
void 
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   741
SimulatorTests::bar1 (int)
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   742
{}
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   743
void 
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   744
SimulatorTests::bar2 (int, int)
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   745
{}
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   746
void 
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   747
SimulatorTests::bar3 (int, int, int)
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   748
{}
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   749
void 
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   750
SimulatorTests::bar4 (int, int, int, int)
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   751
{}
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   752
void 
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   753
SimulatorTests::bar5 (int, int, int, int, int)
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   754
{}
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   755
945
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   756
void
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   757
SimulatorTests::baz1 (int &)
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   758
{}
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   759
void
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   760
SimulatorTests::baz2 (int &, int &)
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   761
{}
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   762
void
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   763
SimulatorTests::baz3 (int &, int &, int &)
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   764
{}
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   765
void 
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   766
SimulatorTests::baz4 (int &, int &, int &, int &)
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   767
{}
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   768
void 
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   769
SimulatorTests::baz5 (int &, int &, int &, int &, int &)
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   770
{}
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   771
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   772
void
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   773
SimulatorTests::cbaz1 (const int &)
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   774
{}
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   775
void
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   776
SimulatorTests::cbaz2 (const int &, const int &)
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   777
{}
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   778
void
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   779
SimulatorTests::cbaz3 (const int &, const int &, const int &)
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   780
{}
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   781
void 
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   782
SimulatorTests::cbaz4 (const int &, const int &, const int &, const int &)
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   783
{}
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   784
void 
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   785
SimulatorTests::cbaz5 (const int &, const int &, const int &, const int &, const int &)
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   786
{}
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   787
1294
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   788
void 
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   789
SimulatorTests::bar0c (void) const
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   790
{}
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   791
void 
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   792
SimulatorTests::bar1c (int) const
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   793
{}
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   794
void 
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   795
SimulatorTests::bar2c (int, int) const
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   796
{}
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   797
void 
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   798
SimulatorTests::bar3c (int, int, int) const
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   799
{}
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   800
void 
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   801
SimulatorTests::bar4c (int, int, int, int) const
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   802
{}
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   803
void 
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   804
SimulatorTests::bar5c (int, int, int, int, int) const
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   805
{}
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   806
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   807
void
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   808
SimulatorTests::baz1c (int &) const
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   809
{}
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   810
void
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   811
SimulatorTests::baz2c (int &, int &) const
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   812
{}
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   813
void
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   814
SimulatorTests::baz3c (int &, int &, int &) const
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   815
{}
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   816
void 
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   817
SimulatorTests::baz4c (int &, int &, int &, int &) const
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   818
{}
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   819
void 
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   820
SimulatorTests::baz5c (int &, int &, int &, int &, int &) const
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   821
{}
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   822
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   823
void
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   824
SimulatorTests::cbaz1c (const int &) const
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   825
{}
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   826
void
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   827
SimulatorTests::cbaz2c (const int &, const int &) const
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   828
{}
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   829
void
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   830
SimulatorTests::cbaz3c (const int &, const int &, const int &) const
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   831
{}
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   832
void 
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   833
SimulatorTests::cbaz4c (const int &, const int &, const int &, const int &) const
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   834
{}
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   835
void 
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   836
SimulatorTests::cbaz5c (const int &, const int &, const int &, const int &, const int &) const
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   837
{}
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   838
114
fe0504af6d16 test each default event scheduler
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 111
diff changeset
   839
bool
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   840
SimulatorTests::RunOneTest (void)
30
eb38b7903dfb add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 29
diff changeset
   841
{
1521
7563328d71ea Use NS_TEST_* macros for simulator unit tests
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 1296
diff changeset
   842
  bool result = true;
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   843
  m_a = true;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   844
  m_b = false;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   845
  m_c = true;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   846
  m_d = false;
114
fe0504af6d16 test each default event scheduler
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 111
diff changeset
   847
162
5b398ac221c7 make Time relative instead of Absolute
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 150
diff changeset
   848
  EventId a = Simulator::Schedule (MicroSeconds (10), &SimulatorTests::A, this, 1);
5b398ac221c7 make Time relative instead of Absolute
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 150
diff changeset
   849
  Simulator::Schedule (MicroSeconds (11), &SimulatorTests::B, this, 2);
5b398ac221c7 make Time relative instead of Absolute
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 150
diff changeset
   850
  m_idC = Simulator::Schedule (MicroSeconds (12), &SimulatorTests::C, this, 3);
31
2def0da92178 add simulator tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 30
diff changeset
   851
1521
7563328d71ea Use NS_TEST_* macros for simulator unit tests
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 1296
diff changeset
   852
  NS_TEST_ASSERT (!m_idC.IsExpired ());
7563328d71ea Use NS_TEST_* macros for simulator unit tests
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 1296
diff changeset
   853
  NS_TEST_ASSERT (!a.IsExpired ());
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   854
  Simulator::Cancel (a);
1521
7563328d71ea Use NS_TEST_* macros for simulator unit tests
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 1296
diff changeset
   855
  NS_TEST_ASSERT (a.IsExpired ());
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   856
  Simulator::Run ();
1521
7563328d71ea Use NS_TEST_* macros for simulator unit tests
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 1296
diff changeset
   857
  NS_TEST_ASSERT (m_a);
7563328d71ea Use NS_TEST_* macros for simulator unit tests
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 1296
diff changeset
   858
  NS_TEST_ASSERT (m_b);
7563328d71ea Use NS_TEST_* macros for simulator unit tests
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 1296
diff changeset
   859
  NS_TEST_ASSERT (m_c);
7563328d71ea Use NS_TEST_* macros for simulator unit tests
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 1296
diff changeset
   860
  NS_TEST_ASSERT (m_d);
7563328d71ea Use NS_TEST_* macros for simulator unit tests
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 1296
diff changeset
   861
  return result;
114
fe0504af6d16 test each default event scheduler
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 111
diff changeset
   862
}
1294
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   863
void
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   864
SimulatorTests::RunTestsConst (void) const
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   865
{
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   866
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::bar0c, this);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   867
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::bar1c, this, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   868
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::bar2c, this, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   869
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::bar3c, this, 0, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   870
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::bar4c, this, 0, 0, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   871
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::bar5c, this, 0, 0, 0, 0, 0);
1296
173efb6d92d8 fix last errors for new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1294
diff changeset
   872
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::bar0c, Ptr<const SimulatorTests> (this));
173efb6d92d8 fix last errors for new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1294
diff changeset
   873
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::bar1c, Ptr<const SimulatorTests> (this), 0);
173efb6d92d8 fix last errors for new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1294
diff changeset
   874
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::bar2c, Ptr<const SimulatorTests> (this), 0, 0);
173efb6d92d8 fix last errors for new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1294
diff changeset
   875
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::bar3c, Ptr<const SimulatorTests> (this), 0, 0, 0);
173efb6d92d8 fix last errors for new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1294
diff changeset
   876
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::bar4c, Ptr<const SimulatorTests> (this), 0, 0, 0, 0);
173efb6d92d8 fix last errors for new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1294
diff changeset
   877
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::bar5c, Ptr<const SimulatorTests> (this), 0, 0, 0, 0, 0);
1294
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   878
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::cbaz1c, this, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   879
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::cbaz2c, this, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   880
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::cbaz3c, this, 0, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   881
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::cbaz4c, this, 0, 0, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   882
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::cbaz5c, this, 0, 0, 0, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   883
  Simulator::ScheduleNow (&SimulatorTests::bar0c, this);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   884
  Simulator::ScheduleNow (&SimulatorTests::bar1c, this, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   885
  Simulator::ScheduleNow (&SimulatorTests::bar2c, this, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   886
  Simulator::ScheduleNow (&SimulatorTests::bar3c, this, 0, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   887
  Simulator::ScheduleNow (&SimulatorTests::bar4c, this, 0, 0, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   888
  Simulator::ScheduleNow (&SimulatorTests::bar5c, this, 0, 0, 0, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   889
  Simulator::ScheduleNow (&SimulatorTests::cbaz1c, this, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   890
  Simulator::ScheduleNow (&SimulatorTests::cbaz2c, this, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   891
  Simulator::ScheduleNow (&SimulatorTests::cbaz3c, this, 0, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   892
  Simulator::ScheduleNow (&SimulatorTests::cbaz4c, this, 0, 0, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   893
  Simulator::ScheduleNow (&SimulatorTests::cbaz5c, this, 0, 0, 0, 0, 0);
1296
173efb6d92d8 fix last errors for new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1294
diff changeset
   894
  Simulator::ScheduleNow (&SimulatorTests::bar0c, Ptr<const SimulatorTests> (this));
173efb6d92d8 fix last errors for new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1294
diff changeset
   895
  Simulator::ScheduleNow (&SimulatorTests::bar1c, Ptr<const SimulatorTests> (this), 0);
173efb6d92d8 fix last errors for new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1294
diff changeset
   896
  Simulator::ScheduleNow (&SimulatorTests::bar2c, Ptr<const SimulatorTests> (this), 0, 0);
173efb6d92d8 fix last errors for new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1294
diff changeset
   897
  Simulator::ScheduleNow (&SimulatorTests::bar3c, Ptr<const SimulatorTests> (this), 0, 0, 0);
173efb6d92d8 fix last errors for new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1294
diff changeset
   898
  Simulator::ScheduleNow (&SimulatorTests::bar4c, Ptr<const SimulatorTests> (this), 0, 0, 0, 0);
173efb6d92d8 fix last errors for new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1294
diff changeset
   899
  Simulator::ScheduleNow (&SimulatorTests::bar5c, Ptr<const SimulatorTests> (this), 0, 0, 0, 0, 0);
1294
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   900
  Simulator::ScheduleDestroy (&SimulatorTests::bar0c, this);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   901
  Simulator::ScheduleDestroy (&SimulatorTests::bar1c, this, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   902
  Simulator::ScheduleDestroy (&SimulatorTests::bar2c, this, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   903
  Simulator::ScheduleDestroy (&SimulatorTests::bar3c, this, 0, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   904
  Simulator::ScheduleDestroy (&SimulatorTests::bar4c, this, 0, 0, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   905
  Simulator::ScheduleDestroy (&SimulatorTests::bar5c, this, 0, 0, 0, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   906
  Simulator::ScheduleDestroy (&SimulatorTests::cbaz1c, this, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   907
  Simulator::ScheduleDestroy (&SimulatorTests::cbaz2c, this, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   908
  Simulator::ScheduleDestroy (&SimulatorTests::cbaz3c, this, 0, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   909
  Simulator::ScheduleDestroy (&SimulatorTests::cbaz4c, this, 0, 0, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   910
  Simulator::ScheduleDestroy (&SimulatorTests::cbaz5c, this, 0, 0, 0, 0, 0);
1296
173efb6d92d8 fix last errors for new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1294
diff changeset
   911
  Simulator::ScheduleDestroy (&SimulatorTests::bar0c, Ptr<const SimulatorTests> (this));
173efb6d92d8 fix last errors for new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1294
diff changeset
   912
  Simulator::ScheduleDestroy (&SimulatorTests::bar1c, Ptr<const SimulatorTests> (this), 0);
173efb6d92d8 fix last errors for new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1294
diff changeset
   913
  Simulator::ScheduleDestroy (&SimulatorTests::bar2c, Ptr<const SimulatorTests> (this), 0, 0);
173efb6d92d8 fix last errors for new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1294
diff changeset
   914
  Simulator::ScheduleDestroy (&SimulatorTests::bar3c, Ptr<const SimulatorTests> (this), 0, 0, 0);
173efb6d92d8 fix last errors for new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1294
diff changeset
   915
  Simulator::ScheduleDestroy (&SimulatorTests::bar4c, Ptr<const SimulatorTests> (this), 0, 0, 0, 0);
173efb6d92d8 fix last errors for new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1294
diff changeset
   916
  Simulator::ScheduleDestroy (&SimulatorTests::bar5c, Ptr<const SimulatorTests> (this), 0, 0, 0, 0, 0);
1294
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   917
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::baz1c, this, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   918
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::baz2c, this, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   919
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::baz3c, this, 0, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   920
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::baz4c, this, 0, 0, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   921
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::baz5c, this, 0, 0, 0, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   922
  Simulator::ScheduleNow (&SimulatorTests::baz1c, this, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   923
  Simulator::ScheduleNow (&SimulatorTests::baz2c, this, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   924
  Simulator::ScheduleNow (&SimulatorTests::baz3c, this, 0, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   925
  Simulator::ScheduleNow (&SimulatorTests::baz4c, this, 0, 0, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   926
  Simulator::ScheduleNow (&SimulatorTests::baz5c, this, 0, 0, 0, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   927
  Simulator::ScheduleDestroy (&SimulatorTests::baz1c, this, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   928
  Simulator::ScheduleDestroy (&SimulatorTests::baz2c, this, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   929
  Simulator::ScheduleDestroy (&SimulatorTests::baz3c, this, 0, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   930
  Simulator::ScheduleDestroy (&SimulatorTests::baz4c, this, 0, 0, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   931
  Simulator::ScheduleDestroy (&SimulatorTests::baz5c, this, 0, 0, 0, 0, 0);
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   932
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   933
  Simulator::Run ();
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   934
  Simulator::Destroy ();
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   935
}
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   936
114
fe0504af6d16 test each default event scheduler
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 111
diff changeset
   937
bool 
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   938
SimulatorTests::RunTests (void)
114
fe0504af6d16 test each default event scheduler
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 111
diff changeset
   939
{
1521
7563328d71ea Use NS_TEST_* macros for simulator unit tests
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 1296
diff changeset
   940
  bool result = true;
7563328d71ea Use NS_TEST_* macros for simulator unit tests
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 1296
diff changeset
   941
1522
70371ffd0ce5 Call Simulator::Destroy () before running simulator unit tests, to force time to start from zero (some tests check for absolute times)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 1521
diff changeset
   942
  Simulator::Destroy ();
2559
ab98bf436a17 do not use DefaultValues in simulator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2503
diff changeset
   943
  Simulator::SetScheduler (CreateObject<SchedulerList> ());
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   944
  if (!RunOneTest ()) 
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   945
    {
1521
7563328d71ea Use NS_TEST_* macros for simulator unit tests
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 1296
diff changeset
   946
      result = false;
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   947
    }
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   948
  Simulator::Destroy ();
2559
ab98bf436a17 do not use DefaultValues in simulator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2503
diff changeset
   949
  Simulator::SetScheduler (CreateObject<SchedulerHeap> ());
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   950
  if (!RunOneTest ()) 
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   951
    {
1521
7563328d71ea Use NS_TEST_* macros for simulator unit tests
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 1296
diff changeset
   952
      result = false;
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   953
    }
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   954
  Simulator::Destroy ();
2559
ab98bf436a17 do not use DefaultValues in simulator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2503
diff changeset
   955
  Simulator::SetScheduler (CreateObject<SchedulerMap> ());
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   956
  if (!RunOneTest ()) 
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   957
    {
1521
7563328d71ea Use NS_TEST_* macros for simulator unit tests
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 1296
diff changeset
   958
      result = false;
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   959
    }
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   960
  Simulator::Destroy ();
31
2def0da92178 add simulator tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 30
diff changeset
   961
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   962
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   963
  Simulator::Schedule (Seconds (0.0), &foo0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   964
  Simulator::Schedule (Seconds (0.0), &foo1, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   965
  Simulator::Schedule (Seconds (0.0), &foo2, 0, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   966
  Simulator::Schedule (Seconds (0.0), &foo3, 0, 0, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   967
  Simulator::Schedule (Seconds (0.0), &foo4, 0, 0, 0, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   968
  Simulator::Schedule (Seconds (0.0), &foo5, 0, 0, 0, 0, 0);
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   969
  Simulator::Schedule (Seconds (0.0), &cber1, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   970
  Simulator::Schedule (Seconds (0.0), &cber2, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   971
  Simulator::Schedule (Seconds (0.0), &cber3, 0, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   972
  Simulator::Schedule (Seconds (0.0), &cber4, 0, 0, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   973
  Simulator::Schedule (Seconds (0.0), &cber5, 0, 0, 0, 0, 0);
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   974
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::bar0, this);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   975
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::bar1, this, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   976
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::bar2, this, 0, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   977
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::bar3, this, 0, 0, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   978
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::bar4, this, 0, 0, 0, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   979
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::bar5, this, 0, 0, 0, 0, 0);
690
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
   980
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::bar0, Ptr<SimulatorTests> (this));
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
   981
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::bar1, Ptr<SimulatorTests> (this), 0);
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
   982
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::bar2, Ptr<SimulatorTests> (this), 0, 0);
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
   983
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::bar3, Ptr<SimulatorTests> (this), 0, 0, 0);
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
   984
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::bar4, Ptr<SimulatorTests> (this), 0, 0, 0, 0);
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
   985
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::bar5, Ptr<SimulatorTests> (this), 0, 0, 0, 0, 0);
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   986
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::cbaz1, this, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   987
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::cbaz2, this, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   988
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::cbaz3, this, 0, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   989
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::cbaz4, this, 0, 0, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   990
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::cbaz5, this, 0, 0, 0, 0, 0);
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   991
  Simulator::ScheduleNow (&foo0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   992
  Simulator::ScheduleNow (&foo1, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   993
  Simulator::ScheduleNow (&foo2, 0, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   994
  Simulator::ScheduleNow (&foo3, 0, 0, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   995
  Simulator::ScheduleNow (&foo4, 0, 0, 0, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   996
  Simulator::ScheduleNow (&foo5, 0, 0, 0, 0, 0);
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   997
  Simulator::ScheduleNow (&cber1, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   998
  Simulator::ScheduleNow (&cber2, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   999
  Simulator::ScheduleNow (&cber3, 0, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1000
  Simulator::ScheduleNow (&cber4, 0, 0, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1001
  Simulator::ScheduleNow (&cber5, 0, 0, 0, 0, 0);
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
  1002
  Simulator::ScheduleNow (&SimulatorTests::bar0, this);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
  1003
  Simulator::ScheduleNow (&SimulatorTests::bar1, this, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
  1004
  Simulator::ScheduleNow (&SimulatorTests::bar2, this, 0, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
  1005
  Simulator::ScheduleNow (&SimulatorTests::bar3, this, 0, 0, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
  1006
  Simulator::ScheduleNow (&SimulatorTests::bar4, this, 0, 0, 0, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
  1007
  Simulator::ScheduleNow (&SimulatorTests::bar5, this, 0, 0, 0, 0, 0);
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1008
  Simulator::ScheduleNow (&SimulatorTests::cbaz1, this, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1009
  Simulator::ScheduleNow (&SimulatorTests::cbaz2, this, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1010
  Simulator::ScheduleNow (&SimulatorTests::cbaz3, this, 0, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1011
  Simulator::ScheduleNow (&SimulatorTests::cbaz4, this, 0, 0, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1012
  Simulator::ScheduleNow (&SimulatorTests::cbaz5, this, 0, 0, 0, 0, 0);
690
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
  1013
  Simulator::ScheduleNow (&SimulatorTests::bar0, Ptr<SimulatorTests> (this));
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
  1014
  Simulator::ScheduleNow (&SimulatorTests::bar1, Ptr<SimulatorTests> (this), 0);
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
  1015
  Simulator::ScheduleNow (&SimulatorTests::bar2, Ptr<SimulatorTests> (this), 0, 0);
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
  1016
  Simulator::ScheduleNow (&SimulatorTests::bar3, Ptr<SimulatorTests> (this), 0, 0, 0);
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
  1017
  Simulator::ScheduleNow (&SimulatorTests::bar4, Ptr<SimulatorTests> (this), 0, 0, 0, 0);
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
  1018
  Simulator::ScheduleNow (&SimulatorTests::bar5, Ptr<SimulatorTests> (this), 0, 0, 0, 0, 0);
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
  1019
  Simulator::ScheduleDestroy (&foo0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
  1020
  Simulator::ScheduleDestroy (&foo1, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
  1021
  Simulator::ScheduleDestroy (&foo2, 0, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
  1022
  Simulator::ScheduleDestroy (&foo3, 0, 0, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
  1023
  Simulator::ScheduleDestroy (&foo4, 0, 0, 0, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
  1024
  Simulator::ScheduleDestroy (&foo5, 0, 0, 0, 0, 0);
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1025
  Simulator::ScheduleDestroy (&cber1, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1026
  Simulator::ScheduleDestroy (&cber2, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1027
  Simulator::ScheduleDestroy (&cber3, 0, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1028
  Simulator::ScheduleDestroy (&cber4, 0, 0, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1029
  Simulator::ScheduleDestroy (&cber5, 0, 0, 0, 0, 0);
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
  1030
  Simulator::ScheduleDestroy (&SimulatorTests::bar0, this);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
  1031
  Simulator::ScheduleDestroy (&SimulatorTests::bar1, this, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
  1032
  Simulator::ScheduleDestroy (&SimulatorTests::bar2, this, 0, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
  1033
  Simulator::ScheduleDestroy (&SimulatorTests::bar3, this, 0, 0, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
  1034
  Simulator::ScheduleDestroy (&SimulatorTests::bar4, this, 0, 0, 0, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
  1035
  Simulator::ScheduleDestroy (&SimulatorTests::bar5, this, 0, 0, 0, 0, 0);
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1036
  Simulator::ScheduleDestroy (&SimulatorTests::cbaz1, this, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1037
  Simulator::ScheduleDestroy (&SimulatorTests::cbaz2, this, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1038
  Simulator::ScheduleDestroy (&SimulatorTests::cbaz3, this, 0, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1039
  Simulator::ScheduleDestroy (&SimulatorTests::cbaz4, this, 0, 0, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1040
  Simulator::ScheduleDestroy (&SimulatorTests::cbaz5, this, 0, 0, 0, 0, 0);
690
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
  1041
  Simulator::ScheduleDestroy (&SimulatorTests::bar0, Ptr<SimulatorTests> (this));
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
  1042
  Simulator::ScheduleDestroy (&SimulatorTests::bar1, Ptr<SimulatorTests> (this), 0);
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
  1043
  Simulator::ScheduleDestroy (&SimulatorTests::bar2, Ptr<SimulatorTests> (this), 0, 0);
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
  1044
  Simulator::ScheduleDestroy (&SimulatorTests::bar3, Ptr<SimulatorTests> (this), 0, 0, 0);
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
  1045
  Simulator::ScheduleDestroy (&SimulatorTests::bar4, Ptr<SimulatorTests> (this), 0, 0, 0, 0);
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
  1046
  Simulator::ScheduleDestroy (&SimulatorTests::bar5, Ptr<SimulatorTests> (this), 0, 0, 0, 0, 0);
181
006158ef00f1 fix memory leaks
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 163
diff changeset
  1047
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1048
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1049
  // the code below does not compile, as expected.
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1050
  //Simulator::Schedule (Seconds (0.0), &cber1, 0.0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1051
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1052
#if 1
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1053
  Simulator::Schedule (Seconds (0.0), &ber1, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1054
  Simulator::Schedule (Seconds (0.0), &ber2, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1055
  Simulator::Schedule (Seconds (0.0), &ber3, 0, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1056
  Simulator::Schedule (Seconds (0.0), &ber4, 0, 0, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1057
  Simulator::Schedule (Seconds (0.0), &ber5, 0, 0, 0, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1058
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::baz1, this, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1059
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::baz2, this, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1060
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::baz3, this, 0, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1061
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::baz4, this, 0, 0, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1062
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::baz5, this, 0, 0, 0, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1063
  Simulator::ScheduleNow (&ber1, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1064
  Simulator::ScheduleNow (&ber2, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1065
  Simulator::ScheduleNow (&ber3, 0, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1066
  Simulator::ScheduleNow (&ber4, 0, 0, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1067
  Simulator::ScheduleNow (&ber5, 0, 0, 0, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1068
  Simulator::ScheduleNow (&SimulatorTests::baz1, this, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1069
  Simulator::ScheduleNow (&SimulatorTests::baz2, this, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1070
  Simulator::ScheduleNow (&SimulatorTests::baz3, this, 0, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1071
  Simulator::ScheduleNow (&SimulatorTests::baz4, this, 0, 0, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1072
  Simulator::ScheduleNow (&SimulatorTests::baz5, this, 0, 0, 0, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1073
  Simulator::ScheduleDestroy (&ber1, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1074
  Simulator::ScheduleDestroy (&ber2, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1075
  Simulator::ScheduleDestroy (&ber3, 0, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1076
  Simulator::ScheduleDestroy (&ber4, 0, 0, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1077
  Simulator::ScheduleDestroy (&ber5, 0, 0, 0, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1078
  Simulator::ScheduleDestroy (&SimulatorTests::baz1, this, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1079
  Simulator::ScheduleDestroy (&SimulatorTests::baz2, this, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1080
  Simulator::ScheduleDestroy (&SimulatorTests::baz3, this, 0, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1081
  Simulator::ScheduleDestroy (&SimulatorTests::baz4, this, 0, 0, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1082
  Simulator::ScheduleDestroy (&SimulatorTests::baz5, this, 0, 0, 0, 0, 0);
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1083
#endif
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
  1084
1294
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
  1085
  RunTestsConst ();
b59fb36ab86a add failing tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
  1086
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
  1087
  EventId nowId = Simulator::ScheduleNow (&foo0);
964
e49de7414508 make sure IsExpired handles destroy events correctly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
  1088
  m_destroyId = Simulator::ScheduleDestroy (&SimulatorTests::destroy, this);
1521
7563328d71ea Use NS_TEST_* macros for simulator unit tests
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 1296
diff changeset
  1089
  NS_TEST_ASSERT (!m_destroyId.IsExpired ());
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
  1090
181
006158ef00f1 fix memory leaks
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 163
diff changeset
  1091
  Simulator::Run ();
964
e49de7414508 make sure IsExpired handles destroy events correctly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
  1092
  m_destroy = false;
181
006158ef00f1 fix memory leaks
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 163
diff changeset
  1093
  Simulator::Destroy ();
1521
7563328d71ea Use NS_TEST_* macros for simulator unit tests
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 1296
diff changeset
  1094
  NS_TEST_ASSERT (m_destroy);
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1095
1008
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1005
diff changeset
  1096
  EventId anId = Simulator::ScheduleNow (&foo0);
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1005
diff changeset
  1097
  EventId anotherId = anId;
1521
7563328d71ea Use NS_TEST_* macros for simulator unit tests
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 1296
diff changeset
  1098
  NS_TEST_ASSERT (!(anId.IsExpired () || anotherId.IsExpired ()));
7563328d71ea Use NS_TEST_* macros for simulator unit tests
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 1296
diff changeset
  1099
1008
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1005
diff changeset
  1100
  Simulator::Remove (anId);
1521
7563328d71ea Use NS_TEST_* macros for simulator unit tests
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 1296
diff changeset
  1101
  NS_TEST_ASSERT (anId.IsExpired ());
7563328d71ea Use NS_TEST_* macros for simulator unit tests
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 1296
diff changeset
  1102
  NS_TEST_ASSERT (anotherId.IsExpired ());
1008
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1005
diff changeset
  1103
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1005
diff changeset
  1104
  Simulator::Run ();
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1005
diff changeset
  1105
  Simulator::Destroy ();
2357
d64b1561b1c2 Release all events left upon Simulator::Destroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1863
diff changeset
  1106
d64b1561b1c2 Release all events left upon Simulator::Destroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1863
diff changeset
  1107
  Simulator::Schedule (Seconds (10.0), &SimulatorTests::baz1, this, 0);
d64b1561b1c2 Release all events left upon Simulator::Destroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1863
diff changeset
  1108
  Simulator::StopAt (Seconds (1.0));
d64b1561b1c2 Release all events left upon Simulator::Destroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1863
diff changeset
  1109
  Simulator::Run ();
d64b1561b1c2 Release all events left upon Simulator::Destroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1863
diff changeset
  1110
  Simulator::Destroy ();
1008
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1005
diff changeset
  1111
1521
7563328d71ea Use NS_TEST_* macros for simulator unit tests
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 1296
diff changeset
  1112
  return result;
30
eb38b7903dfb add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 29
diff changeset
  1113
}
eb38b7903dfb add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 29
diff changeset
  1114
53
ae406f4957d5 variable/method/function coding style update
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 52
diff changeset
  1115
SimulatorTests gSimulatorTests;
30
eb38b7903dfb add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 29
diff changeset
  1116
eb38b7903dfb add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 29
diff changeset
  1117
}; // namespace ns3
eb38b7903dfb add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 29
diff changeset
  1118
eb38b7903dfb add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 29
diff changeset
  1119
#endif /* RUN_SELF_TESTS */
24
706b1d903da9 doc typo
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 22
diff changeset
  1120
706b1d903da9 doc typo
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 22
diff changeset
  1121
37
af78cb75be51 improve tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 36
diff changeset
  1122