src/simulator/simulator.cc
author Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
Thu, 19 Jul 2007 18:57:19 +0200
changeset 948 8dc076230f11
parent 945 6b8efd6b621a
child 963 3a7a66d1942c
permissions -rw-r--r--
finish support for references as arguments to event handlers
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
 * All rights reserved.
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     5
 *
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     6
 * 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
     7
 * 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
     8
 * published by the Free Software Foundation;
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     9
 *
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    10
 * 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
    11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    13
 * GNU General Public License for more details.
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    14
 *
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    15
 * 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
    16
 * 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
    17
 * 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
    18
 *
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    19
 * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    20
 */
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    21
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    22
#include "simulator.h"
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    23
#include "scheduler.h"
25
9b3bb088c560 first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 24
diff changeset
    24
#include "event-impl.h"
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    25
439
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 336
diff changeset
    26
#include "ns3/assert.h"
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 336
diff changeset
    27
#include "ns3/default-value.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
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    53
class SimulatorPrivate {
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    54
public:
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
    55
  SimulatorPrivate (Scheduler *events);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
    56
  ~SimulatorPrivate ();
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    57
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
    58
  void EnableLogTo (char const *filename);
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    59
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
    60
  bool IsFinished (void) const;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
    61
  Time Next (void) const;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
    62
  void Stop (void);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
    63
  void StopAt (Time const &time);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
    64
  EventId Schedule (Time const &time, EventImpl *event);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
    65
  void ScheduleNow (EventImpl *event);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
    66
  void ScheduleDestroy (EventImpl *event);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
    67
  void Remove (EventId ev);
472
41aa5fca4f49 make sure that Simulator::Cancel deals correctly with events which were already scheduled
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 336
diff changeset
    68
  void Cancel (EventId &ev);
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
    69
  bool IsExpired (EventId ev);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
    70
  void Run (void);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
    71
  Time Now (void) const;
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    72
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    73
private:
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
    74
  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
    75
  uint64_t NextTs (void) const;
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    76
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
    77
  typedef std::list<std::pair<EventImpl *,uint32_t> > Events;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
    78
  Events m_destroy;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
    79
  uint64_t m_stopAt;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
    80
  bool m_stop;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
    81
  Scheduler *m_events;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
    82
  uint32_t m_uid;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
    83
  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
    84
  uint64_t m_currentTs;
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
    85
  std::ofstream m_log;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
    86
  std::ifstream m_inputLog;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
    87
  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
    88
  // 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
    89
  // 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
    90
  int m_unscheduledEvents;
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    91
};
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    92
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    93
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    94
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    95
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    96
SimulatorPrivate::SimulatorPrivate (Scheduler *events)
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    97
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
    98
  m_stop = false;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
    99
  m_stopAt = 0;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   100
  m_events = events;
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
   101
  // uids are allocated from 1.
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
   102
  m_uid = 1; 
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
   103
  // 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
   104
  m_currentUid = 0;
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   105
  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
   106
  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
   107
  m_unscheduledEvents = 0;
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   108
}
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   109
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   110
SimulatorPrivate::~SimulatorPrivate ()
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   111
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   112
  while (!m_destroy.empty ()) 
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   113
    {
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   114
      EventImpl *ev = m_destroy.front ().first;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   115
      m_destroy.pop_front ();
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   116
      TRACE ("handle destroy " << ev);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   117
      ev->Invoke ();
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   118
      delete ev;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   119
    }
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   120
  delete m_events;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   121
  m_events = (Scheduler *)0xdeadbeaf;
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   122
}
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   123
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   124
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   125
void
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   126
SimulatorPrivate::EnableLogTo (char const *filename)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   127
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   128
  m_log.open (filename);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   129
  m_logEnable = true;
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   130
}
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   131
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   132
void
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   133
SimulatorPrivate::ProcessOneEvent (void)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   134
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   135
  EventImpl *nextEv = m_events->PeekNext ();
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   136
  Scheduler::EventKey nextKey = m_events->PeekNextKey ();
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   137
  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
   138
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
   139
  NS_ASSERT (nextKey.m_ts >= m_currentTs);
336
9dd9a53188bc add consistency checks. Based on patch by Gustavo Carneiro
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 286
diff changeset
   140
  --m_unscheduledEvents;
9dd9a53188bc add consistency checks. Based on patch by Gustavo Carneiro
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 286
diff changeset
   141
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   142
  TRACE ("handle " << nextEv);
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
   143
  m_currentTs = nextKey.m_ts;
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   144
  m_currentUid = nextKey.m_uid;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   145
  if (m_logEnable) 
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   146
    {
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
   147
      m_log << "e "<<nextKey.m_uid << " " << nextKey.m_ts << std::endl;
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   148
    }
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   149
  nextEv->Invoke ();
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   150
  delete nextEv;
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   151
}
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   152
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   153
bool 
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   154
SimulatorPrivate::IsFinished (void) const
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   155
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   156
  return m_events->IsEmpty ();
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   157
}
143
552ff26b4224 new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 129
diff changeset
   158
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
   159
SimulatorPrivate::NextTs (void) const
143
552ff26b4224 new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 129
diff changeset
   160
{
286
57e6a2006962 convert use of <cassert> to "ns3/assert.h"
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 213
diff changeset
   161
  NS_ASSERT (!m_events->IsEmpty ());
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   162
  Scheduler::EventKey nextKey = m_events->PeekNextKey ();
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
   163
  return nextKey.m_ts;
143
552ff26b4224 new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 129
diff changeset
   164
}
25
9b3bb088c560 first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 24
diff changeset
   165
Time
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   166
SimulatorPrivate::Next (void) const
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   167
{
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
   168
  return TimeStep (NextTs ());
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   169
}
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   170
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   171
void
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   172
SimulatorPrivate::Run (void)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   173
{
143
552ff26b4224 new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 129
diff changeset
   174
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   175
  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
   176
         (m_stopAt == 0 || m_stopAt > NextTs ())) 
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   177
    {
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   178
      ProcessOneEvent ();
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   179
    }
336
9dd9a53188bc add consistency checks. Based on patch by Gustavo Carneiro
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 286
diff changeset
   180
9dd9a53188bc add consistency checks. Based on patch by Gustavo Carneiro
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 286
diff changeset
   181
  // 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
   182
  // 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
   183
  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
   184
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   185
  m_log.close ();
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   186
}
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   187
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   188
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   189
void 
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   190
SimulatorPrivate::Stop (void)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   191
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   192
  m_stop = true;
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   193
}
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   194
void 
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   195
SimulatorPrivate::StopAt (Time const &at)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   196
{
286
57e6a2006962 convert use of <cassert> to "ns3/assert.h"
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 213
diff changeset
   197
  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
   198
  m_stopAt = at.GetTimeStep ();
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   199
}
25
9b3bb088c560 first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 24
diff changeset
   200
EventId
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   201
SimulatorPrivate::Schedule (Time const &time, EventImpl *event)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   202
{
286
57e6a2006962 convert use of <cassert> to "ns3/assert.h"
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 213
diff changeset
   203
  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
   204
  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
   205
  uint64_t ts = (uint64_t) time.GetTimeStep ();
a5878de7d71c The header file ns3/cairo-wideint-private.h was added since the type int32_t was used.
Emmanuelle Laprise
parents: 523
diff changeset
   206
  Scheduler::EventKey key = {ts, m_uid};
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   207
  if (m_logEnable) 
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   208
    {
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
   209
      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
   210
            <<m_uid<<" "<<time.GetTimeStep () << std::endl;
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   211
    }
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   212
  m_uid++;
336
9dd9a53188bc add consistency checks. Based on patch by Gustavo Carneiro
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 286
diff changeset
   213
  ++m_unscheduledEvents;
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   214
  return m_events->Insert (event, key);
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   215
}
145
947b77174b72 start of work to re-implement Schedule* methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 144
diff changeset
   216
void 
947b77174b72 start of work to re-implement Schedule* methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 144
diff changeset
   217
SimulatorPrivate::ScheduleNow (EventImpl *event)
947b77174b72 start of work to re-implement Schedule* methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 144
diff changeset
   218
{
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
   219
  uint64_t ts = 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
   220
  Scheduler::EventKey key = {ts, m_uid};
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   221
  if (m_logEnable) 
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   222
    {
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
   223
      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
   224
            <<m_uid<<" "<<ts << std::endl;
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   225
    }
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   226
  m_uid++;
336
9dd9a53188bc add consistency checks. Based on patch by Gustavo Carneiro
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 286
diff changeset
   227
  ++m_unscheduledEvents;
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   228
  m_events->Insert (event, key);
145
947b77174b72 start of work to re-implement Schedule* methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 144
diff changeset
   229
}
947b77174b72 start of work to re-implement Schedule* methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 144
diff changeset
   230
void 
947b77174b72 start of work to re-implement Schedule* methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 144
diff changeset
   231
SimulatorPrivate::ScheduleDestroy (EventImpl *event)
947b77174b72 start of work to re-implement Schedule* methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 144
diff changeset
   232
{
147
705658c244c3 implement ScheduleNow and ScheduleDestroy methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   233
  m_destroy.push_back (std::make_pair (event, m_uid));  
705658c244c3 implement ScheduleNow and ScheduleDestroy methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   234
  if (m_logEnable) 
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   235
  {
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
   236
    m_log << "id " << m_currentUid << " " << Now ().GetTimeStep () << " "
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   237
          << m_uid << std::endl;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   238
  }
147
705658c244c3 implement ScheduleNow and ScheduleDestroy methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   239
  m_uid++;
145
947b77174b72 start of work to re-implement Schedule* methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 144
diff changeset
   240
}
947b77174b72 start of work to re-implement Schedule* methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 144
diff changeset
   241
25
9b3bb088c560 first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 24
diff changeset
   242
Time
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   243
SimulatorPrivate::Now (void) const
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   244
{
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
   245
  return TimeStep (m_currentTs);
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   246
}
25
9b3bb088c560 first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 24
diff changeset
   247
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   248
void
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   249
SimulatorPrivate::Remove (EventId ev)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   250
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   251
  Scheduler::EventKey key;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   252
  EventImpl *impl = m_events->Remove (ev, &key);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   253
  delete impl;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   254
  if (m_logEnable) 
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   255
    {
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
   256
      m_log << "r " << 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
   257
            << key.m_uid << " " << key.m_ts << std::endl;
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   258
    }
336
9dd9a53188bc add consistency checks. Based on patch by Gustavo Carneiro
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 286
diff changeset
   259
  --m_unscheduledEvents;
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   260
}
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   261
25
9b3bb088c560 first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 24
diff changeset
   262
void
472
41aa5fca4f49 make sure that Simulator::Cancel deals correctly with events which were already scheduled
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 336
diff changeset
   263
SimulatorPrivate::Cancel (EventId &id)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   264
{
472
41aa5fca4f49 make sure that Simulator::Cancel deals correctly with events which were already scheduled
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 336
diff changeset
   265
  id.Cancel ();
25
9b3bb088c560 first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 24
diff changeset
   266
}
9b3bb088c560 first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 24
diff changeset
   267
9b3bb088c560 first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 24
diff changeset
   268
bool
927
b5bc396a29b0 Make Simulator::IsExpired parameter const, to reflect the fact that the EventId is not changed. EventId::IsExpired and EventId::IsRunning also made const.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 692
diff changeset
   269
SimulatorPrivate::IsExpired (const EventId ev)
25
9b3bb088c560 first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 24
diff changeset
   270
{
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
   271
  if (ev.GetEventImpl () == 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
   272
      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
   273
      (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
   274
       ev.GetUid () <= m_currentUid) ||
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
   275
      ev.GetEventImpl ()->IsCancelled ()) 
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
   276
    {
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
   277
      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
   278
    }
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
   279
  else
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   280
    {
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   281
      return false;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   282
    }
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   283
}
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   284
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   285
16
99e833adbb46 change yans namespace to ns3
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 14
diff changeset
   286
}; // namespace ns3
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   287
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   288
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   289
#include "scheduler-list.h"
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   290
#include "scheduler-heap.h"
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   291
#include "scheduler-map.h"
45
f963078c6e95 enable user-provided schedulers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 38
diff changeset
   292
#include "scheduler-factory.h"
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   293
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   294
16
99e833adbb46 change yans namespace to ns3
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 14
diff changeset
   295
namespace ns3 {
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   296
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   297
SimulatorPrivate *Simulator::m_priv = 0;
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   298
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   299
void Simulator::SetLinkedList (void)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   300
{
692
3f03c8c4f381 uniformize the DefaultValues used by the Event Schedulers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 690
diff changeset
   301
  Bind ("Scheduler", "List");
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   302
}
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   303
void Simulator::SetBinaryHeap (void)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   304
{
692
3f03c8c4f381 uniformize the DefaultValues used by the Event Schedulers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 690
diff changeset
   305
  Bind ("Scheduler", "BinaryHeap");
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   306
}
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   307
void Simulator::SetStdMap (void)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   308
{
692
3f03c8c4f381 uniformize the DefaultValues used by the Event Schedulers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 690
diff changeset
   309
  Bind ("Scheduler", "Map");
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   310
}
45
f963078c6e95 enable user-provided schedulers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 38
diff changeset
   311
void 
439
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 336
diff changeset
   312
Simulator::SetExternal (const std::string &external)
45
f963078c6e95 enable user-provided schedulers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 38
diff changeset
   313
{
692
3f03c8c4f381 uniformize the DefaultValues used by the Event Schedulers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 690
diff changeset
   314
  Bind ("Scheduler", external);
45
f963078c6e95 enable user-provided schedulers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 38
diff changeset
   315
}
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   316
void Simulator::EnableLogTo (char const *filename)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   317
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   318
  GetPriv ()->EnableLogTo (filename);
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   319
}
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   320
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   321
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   322
SimulatorPrivate *
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   323
Simulator::GetPriv (void)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   324
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   325
  if (m_priv == 0) 
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   326
    {
439
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 336
diff changeset
   327
      Scheduler *events = SchedulerFactory::CreateDefault ();
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   328
      m_priv = new SimulatorPrivate (events);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   329
    }
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   330
  TRACE_S ("priv " << m_priv);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   331
  return m_priv;
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   332
}
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   333
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   334
void
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   335
Simulator::Destroy (void)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   336
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   337
  delete m_priv;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   338
  m_priv = 0;
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   339
}
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   340
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   341
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   342
bool 
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   343
Simulator::IsFinished (void)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   344
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   345
  return GetPriv ()->IsFinished ();
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   346
}
25
9b3bb088c560 first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 24
diff changeset
   347
Time
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   348
Simulator::Next (void)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   349
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   350
  return GetPriv ()->Next ();
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   351
}
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   352
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   353
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   354
void 
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   355
Simulator::Run (void)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   356
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   357
  GetPriv ()->Run ();
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   358
}
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   359
void 
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   360
Simulator::Stop (void)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   361
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   362
  TRACE ("stop");
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   363
  GetPriv ()->Stop ();
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   364
}
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   365
void 
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   366
Simulator::StopAt (Time const &at)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   367
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   368
  GetPriv ()->StopAt (at);
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   369
}
25
9b3bb088c560 first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 24
diff changeset
   370
Time
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   371
Simulator::Now (void)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   372
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   373
  return GetPriv ()->Now ();
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   374
}
25
9b3bb088c560 first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 24
diff changeset
   375
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   376
EventImpl *
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   377
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
   378
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   379
    // zero arg version
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   380
  class EventFunctionImpl0 : public EventImpl {
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   381
  public:
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   382
  	typedef void (*F)(void);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   383
      
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   384
  	EventFunctionImpl0 (F function) 
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   385
  		: m_function (function)
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   386
  	{}
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   387
  	virtual ~EventFunctionImpl0 () {}
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   388
  protected:
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   389
  	virtual void Notify (void) { 
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   390
  		(*m_function) (); 
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   391
      }
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   392
  private:
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   393
  	F m_function;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   394
  } *ev = new EventFunctionImpl0 (f);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   395
  return ev;
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   396
}
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   397
EventId
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   398
Simulator::Schedule (Time const &time, EventImpl *ev)
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   399
{
162
5b398ac221c7 make Time relative instead of Absolute
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 150
diff changeset
   400
  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
   401
}
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   402
void
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   403
Simulator::ScheduleNow (EventImpl *ev)
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   404
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   405
  GetPriv ()->ScheduleNow (ev);
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   406
}
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   407
void
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   408
Simulator::ScheduleDestroy (EventImpl *ev)
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   409
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   410
  GetPriv ()->ScheduleDestroy (ev);
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   411
}  
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   412
EventId
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   413
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
   414
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   415
  return Schedule (time, MakeEvent (f));
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   416
}
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   417
void
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   418
Simulator::ScheduleNow (void (*f) (void))
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   419
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   420
  return ScheduleNow (MakeEvent (f));
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   421
}
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   422
void
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   423
Simulator::ScheduleDestroy (void (*f) (void))
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   424
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   425
  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
   426
}
0f3f4b0a158b reorganize the implementation of template member methods in Simulator class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 54
diff changeset
   427
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   428
25
9b3bb088c560 first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 24
diff changeset
   429
void
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   430
Simulator::Remove (EventId ev)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   431
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   432
  return GetPriv ()->Remove (ev);
9
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
25
9b3bb088c560 first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 24
diff changeset
   435
void
472
41aa5fca4f49 make sure that Simulator::Cancel deals correctly with events which were already scheduled
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 336
diff changeset
   436
Simulator::Cancel (EventId &ev)
25
9b3bb088c560 first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 24
diff changeset
   437
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   438
  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
   439
}
9b3bb088c560 first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 24
diff changeset
   440
bool 
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   441
Simulator::IsExpired (EventId id)
25
9b3bb088c560 first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 24
diff changeset
   442
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   443
  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
   444
}
9b3bb088c560 first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 24
diff changeset
   445
679
0c4773ca0f29 avoid cyclic dependency between Simulator and Time code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 675
diff changeset
   446
Time Now (void)
0c4773ca0f29 avoid cyclic dependency between Simulator and Time code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 675
diff changeset
   447
{
0c4773ca0f29 avoid cyclic dependency between Simulator and Time code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 675
diff changeset
   448
  return Time (Simulator::Now ());
0c4773ca0f29 avoid cyclic dependency between Simulator and Time code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 675
diff changeset
   449
}
0c4773ca0f29 avoid cyclic dependency between Simulator and Time code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 675
diff changeset
   450
16
99e833adbb46 change yans namespace to ns3
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 14
diff changeset
   451
}; // namespace ns3
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   452
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   453
30
eb38b7903dfb add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 29
diff changeset
   454
#ifdef RUN_SELF_TESTS
eb38b7903dfb add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 29
diff changeset
   455
eb38b7903dfb add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 29
diff changeset
   456
#include "ns3/test.h"
690
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
   457
#include "ns3/ptr.h"
30
eb38b7903dfb add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 29
diff changeset
   458
eb38b7903dfb add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 29
diff changeset
   459
namespace ns3 {
eb38b7903dfb add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 29
diff changeset
   460
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   461
static void foo0 (void)
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   462
{}
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   463
static void foo1 (int)
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   464
{}
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   465
static void foo2 (int, int)
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   466
{}
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   467
static void foo3 (int, int, int)
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   468
{}
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   469
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
   470
{}
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   471
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
   472
{}
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   473
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   474
#if 1
945
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   475
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
   476
{}
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   477
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
   478
{}
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   479
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
   480
{}
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   481
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
   482
{}
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   483
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
   484
{}
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   485
#endif
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   486
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   487
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
   488
{}
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   489
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
   490
{}
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   491
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
   492
{}
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   493
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
   494
{}
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   495
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
   496
{}
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   497
  
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   498
30
eb38b7903dfb add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 29
diff changeset
   499
class SimulatorTests : public Test {
eb38b7903dfb add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 29
diff changeset
   500
public:
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   501
  SimulatorTests ();
690
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
   502
  // only here for testing of Ptr<>
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
   503
  void Ref (void);
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
   504
  void Unref (void);
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   505
  virtual ~SimulatorTests ();
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   506
  virtual bool RunTests (void);
31
2def0da92178 add simulator tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 30
diff changeset
   507
private:
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   508
  uint64_t NowUs ();
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   509
  bool RunOneTest (void);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   510
  void A (int a);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   511
  void B (int b);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   512
  void C (int c);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   513
  void D (int d);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   514
  void bar0 (void);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   515
  void bar1 (int);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   516
  void bar2 (int, int);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   517
  void bar3 (int, int, int);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   518
  void bar4 (int, int, int, int);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   519
  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
   520
  void baz1 (int &);
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   521
  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
   522
  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
   523
  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
   524
  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
   525
  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
   526
  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
   527
  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
   528
  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
   529
  void cbaz5 (const int &, const int &, const int &, const int &, const int &);
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   530
  
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   531
  bool m_b;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   532
  bool m_a;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   533
  bool m_c;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   534
  bool m_d;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   535
  EventId m_idC;
30
eb38b7903dfb add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 29
diff changeset
   536
};
eb38b7903dfb add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 29
diff changeset
   537
eb38b7903dfb add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 29
diff changeset
   538
SimulatorTests::SimulatorTests ()
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   539
  : Test ("Simulator")
30
eb38b7903dfb add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 29
diff changeset
   540
{}
eb38b7903dfb add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 29
diff changeset
   541
SimulatorTests::~SimulatorTests ()
eb38b7903dfb add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 29
diff changeset
   542
{}
690
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
   543
void 
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
   544
SimulatorTests::Ref (void)
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
   545
{}
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
   546
void 
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
   547
SimulatorTests::Unref (void)
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
   548
{}
143
552ff26b4224 new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 129
diff changeset
   549
uint64_t
552ff26b4224 new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 129
diff changeset
   550
SimulatorTests::NowUs (void)
552ff26b4224 new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 129
diff changeset
   551
{
163
2a7e05018eeb rename Time::ApproximateTo methods to Time::Get
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 162
diff changeset
   552
  uint64_t ns = Now ().GetNanoSeconds ();
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   553
  return ns / 1000;
143
552ff26b4224 new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 129
diff changeset
   554
}  
31
2def0da92178 add simulator tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 30
diff changeset
   555
void
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   556
SimulatorTests::A (int a)
31
2def0da92178 add simulator tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 30
diff changeset
   557
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   558
  m_a = false;
31
2def0da92178 add simulator tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 30
diff changeset
   559
}
2def0da92178 add simulator tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 30
diff changeset
   560
void
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   561
SimulatorTests::B (int b)
31
2def0da92178 add simulator tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 30
diff changeset
   562
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   563
  if (b != 2 || NowUs () != 11) 
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   564
    {
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   565
      m_b = false;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   566
    } 
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   567
  else 
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   568
    {
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   569
      m_b = true;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   570
    }
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   571
  Simulator::Remove (m_idC);
162
5b398ac221c7 make Time relative instead of Absolute
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 150
diff changeset
   572
  Simulator::Schedule (MicroSeconds (10), &SimulatorTests::D, this, 4);
31
2def0da92178 add simulator tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 30
diff changeset
   573
}
2def0da92178 add simulator tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 30
diff changeset
   574
void
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   575
SimulatorTests::C (int c)
31
2def0da92178 add simulator tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 30
diff changeset
   576
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   577
  m_c = false;
31
2def0da92178 add simulator tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 30
diff changeset
   578
}
32
789f69e312bf more tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 31
diff changeset
   579
void
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   580
SimulatorTests::D (int d)
32
789f69e312bf more tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 31
diff changeset
   581
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   582
  if (d != 4 || NowUs () != (11+10)) 
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   583
    {
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   584
      m_d = false;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   585
    } 
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   586
  else 
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   587
    {
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   588
      m_d = true;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   589
    }
32
789f69e312bf more tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 31
diff changeset
   590
}
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   591
void 
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   592
SimulatorTests::bar0 (void)
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   593
{}
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   594
void 
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   595
SimulatorTests::bar1 (int)
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   596
{}
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   597
void 
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   598
SimulatorTests::bar2 (int, int)
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   599
{}
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   600
void 
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   601
SimulatorTests::bar3 (int, int, int)
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   602
{}
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   603
void 
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   604
SimulatorTests::bar4 (int, int, int, int)
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   605
{}
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   606
void 
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   607
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
   608
{}
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   609
945
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   610
void
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   611
SimulatorTests::baz1 (int &)
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   612
{}
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   613
void
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   614
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
   615
{}
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   616
void
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   617
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
   618
{}
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   619
void 
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   620
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
   621
{}
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   622
void 
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   623
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
   624
{}
6b8efd6b621a failing testcases to for events with references as arguments
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 927
diff changeset
   625
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   626
void
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   627
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
   628
{}
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   629
void
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   630
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
   631
{}
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   632
void
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   633
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
   634
{}
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   635
void 
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   636
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
   637
{}
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   638
void 
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   639
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
   640
{}
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   641
114
fe0504af6d16 test each default event scheduler
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 111
diff changeset
   642
bool
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   643
SimulatorTests::RunOneTest (void)
30
eb38b7903dfb add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 29
diff changeset
   644
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   645
  bool ok = true;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   646
  m_a = true;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   647
  m_b = false;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   648
  m_c = true;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   649
  m_d = false;
114
fe0504af6d16 test each default event scheduler
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 111
diff changeset
   650
162
5b398ac221c7 make Time relative instead of Absolute
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 150
diff changeset
   651
  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
   652
  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
   653
  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
   654
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
   655
  if (m_idC.IsExpired ()) 
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
   656
    {
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
   657
      ok = false;
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
   658
    }
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
   659
  if (a.IsExpired ())
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
   660
    {
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
   661
      ok = false;
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
   662
    }
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   663
  Simulator::Cancel (a);
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
   664
  if (!a.IsExpired ())
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
   665
    {
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
   666
      ok = false;
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
   667
    }
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   668
  Simulator::Run ();
31
2def0da92178 add simulator tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 30
diff changeset
   669
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   670
  if (!m_a || !m_b || !m_c || !m_d) 
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   671
    {
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   672
      ok = false;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   673
    }
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   674
  return ok;
114
fe0504af6d16 test each default event scheduler
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 111
diff changeset
   675
}
fe0504af6d16 test each default event scheduler
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 111
diff changeset
   676
bool 
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 121
diff changeset
   677
SimulatorTests::RunTests (void)
114
fe0504af6d16 test each default event scheduler
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 111
diff changeset
   678
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   679
  bool ok = true;
114
fe0504af6d16 test each default event scheduler
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 111
diff changeset
   680
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   681
  Simulator::SetLinkedList ();
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   682
  if (!RunOneTest ()) 
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   683
    {
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   684
      ok = false;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   685
    }
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   686
  Simulator::Destroy ();
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   687
  Simulator::SetBinaryHeap ();
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   688
  if (!RunOneTest ()) 
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   689
    {
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   690
      ok = false;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   691
    }
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   692
  Simulator::Destroy ();
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   693
  Simulator::SetStdMap ();
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   694
  if (!RunOneTest ()) 
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   695
    {
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   696
      ok = false;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   697
    }
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   698
  Simulator::Destroy ();
31
2def0da92178 add simulator tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 30
diff changeset
   699
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   700
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   701
  Simulator::Schedule (Seconds (0.0), &foo0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   702
  Simulator::Schedule (Seconds (0.0), &foo1, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   703
  Simulator::Schedule (Seconds (0.0), &foo2, 0, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   704
  Simulator::Schedule (Seconds (0.0), &foo3, 0, 0, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   705
  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
   706
  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
   707
  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
   708
  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
   709
  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
   710
  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
   711
  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
   712
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::bar0, this);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   713
  Simulator::Schedule (Seconds (0.0), &SimulatorTests::bar1, this, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   714
  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
   715
  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
   716
  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
   717
  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
   718
  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
   719
  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
   720
  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
   721
  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
   722
  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
   723
  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
   724
  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
   725
  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
   726
  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
   727
  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
   728
  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
   729
  Simulator::ScheduleNow (&foo0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   730
  Simulator::ScheduleNow (&foo1, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   731
  Simulator::ScheduleNow (&foo2, 0, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   732
  Simulator::ScheduleNow (&foo3, 0, 0, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   733
  Simulator::ScheduleNow (&foo4, 0, 0, 0, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   734
  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
   735
  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
   736
  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
   737
  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
   738
  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
   739
  Simulator::ScheduleNow (&cber5, 0, 0, 0, 0, 0);
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   740
  Simulator::ScheduleNow (&SimulatorTests::bar0, this);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   741
  Simulator::ScheduleNow (&SimulatorTests::bar1, this, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   742
  Simulator::ScheduleNow (&SimulatorTests::bar2, this, 0, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   743
  Simulator::ScheduleNow (&SimulatorTests::bar3, this, 0, 0, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   744
  Simulator::ScheduleNow (&SimulatorTests::bar4, this, 0, 0, 0, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   745
  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
   746
  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
   747
  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
   748
  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
   749
  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
   750
  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
   751
  Simulator::ScheduleNow (&SimulatorTests::bar0, Ptr<SimulatorTests> (this));
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
   752
  Simulator::ScheduleNow (&SimulatorTests::bar1, Ptr<SimulatorTests> (this), 0);
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
   753
  Simulator::ScheduleNow (&SimulatorTests::bar2, Ptr<SimulatorTests> (this), 0, 0);
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
   754
  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
   755
  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
   756
  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
   757
  Simulator::ScheduleDestroy (&foo0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   758
  Simulator::ScheduleDestroy (&foo1, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   759
  Simulator::ScheduleDestroy (&foo2, 0, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   760
  Simulator::ScheduleDestroy (&foo3, 0, 0, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   761
  Simulator::ScheduleDestroy (&foo4, 0, 0, 0, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   762
  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
   763
  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
   764
  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
   765
  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
   766
  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
   767
  Simulator::ScheduleDestroy (&cber5, 0, 0, 0, 0, 0);
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   768
  Simulator::ScheduleDestroy (&SimulatorTests::bar0, this);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   769
  Simulator::ScheduleDestroy (&SimulatorTests::bar1, this, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   770
  Simulator::ScheduleDestroy (&SimulatorTests::bar2, this, 0, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   771
  Simulator::ScheduleDestroy (&SimulatorTests::bar3, this, 0, 0, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   772
  Simulator::ScheduleDestroy (&SimulatorTests::bar4, this, 0, 0, 0, 0);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   773
  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
   774
  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
   775
  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
   776
  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
   777
  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
   778
  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
   779
  Simulator::ScheduleDestroy (&SimulatorTests::bar0, Ptr<SimulatorTests> (this));
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
   780
  Simulator::ScheduleDestroy (&SimulatorTests::bar1, Ptr<SimulatorTests> (this), 0);
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
   781
  Simulator::ScheduleDestroy (&SimulatorTests::bar2, Ptr<SimulatorTests> (this), 0, 0);
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
   782
  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
   783
  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
   784
  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
   785
948
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
  // 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
   788
  //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
   789
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   790
#if 1
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   791
  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
   792
  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
   793
  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
   794
  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
   795
  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
   796
  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
   797
  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
   798
  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
   799
  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
   800
  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
   801
  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
   802
  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
   803
  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
   804
  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
   805
  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
   806
  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
   807
  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
   808
  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
   809
  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
   810
  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
   811
  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
   812
  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
   813
  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
   814
  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
   815
  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
   816
  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
   817
  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
   818
  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
   819
  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
   820
  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
   821
#endif
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 945
diff changeset
   822
181
006158ef00f1 fix memory leaks
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 163
diff changeset
   823
  Simulator::Run ();
006158ef00f1 fix memory leaks
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 163
diff changeset
   824
  Simulator::Destroy ();
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   825
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 148
diff changeset
   826
  return ok;
30
eb38b7903dfb add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 29
diff changeset
   827
}
eb38b7903dfb add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 29
diff changeset
   828
53
ae406f4957d5 variable/method/function coding style update
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 52
diff changeset
   829
SimulatorTests gSimulatorTests;
30
eb38b7903dfb add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 29
diff changeset
   830
eb38b7903dfb add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 29
diff changeset
   831
}; // namespace ns3
eb38b7903dfb add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 29
diff changeset
   832
eb38b7903dfb add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 29
diff changeset
   833
#endif /* RUN_SELF_TESTS */
24
706b1d903da9 doc typo
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 22
diff changeset
   834
706b1d903da9 doc typo
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 22
diff changeset
   835
37
af78cb75be51 improve tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 36
diff changeset
   836