src/simulator/watchdog.h
author Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
Fri, 26 Oct 2007 14:14:20 +0200
changeset 2036 0cb3c7151e89
parent 1944 7044c1ad1d79
child 3182 61fe7fe81ebd
permissions -rw-r--r--
add missing copyright headers
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1944
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     2
/*
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     3
 * Copyright (c) 2007 INRIA
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     4
 *
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     6
 * it under the terms of the GNU General Public License version 2 as
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     7
 * published by the Free Software Foundation;
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     8
 *
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    12
 * GNU General Public License for more details.
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    13
 *
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    14
 * You should have received a copy of the GNU General Public License
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    15
 * along with this program; if not, write to the Free Software
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    16
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    17
 *
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    18
 * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    19
 */
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    20
#ifndef WATCHDOG_H
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    21
#define WATCHDOG_H
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    22
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    23
#include "nstime.h"
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    24
#include "event-id.h"
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    25
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    26
namespace ns3 {
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    27
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    28
class TimerImpl;
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    29
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    30
class Watchdog 
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    31
{
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    32
public:
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    33
  Watchdog ();
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    34
  ~Watchdog ();
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    35
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    36
  void Ping (Time delay);
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    37
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    38
  /**
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    39
   * \param fn the function
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    40
   *
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    41
   * Store this function in this Timer for later use by Timer::Schedule.
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    42
   */
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    43
  template <typename FN>
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    44
  void SetFunction (FN fn);
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    45
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    46
  /**
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    47
   * \param memPtr the member function pointer
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    48
   * \param objPtr the pointer to object
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    49
   *
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    50
   * Store this function and object in this Timer for later use by Timer::Schedule.
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    51
   */
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    52
  template <typename MEM_PTR, typename OBJ_PTR>
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    53
  void SetFunction (MEM_PTR memPtr, OBJ_PTR objPtr);
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    54
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    55
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    56
  /**
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    57
   * \param a1 the first argument
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    58
   *
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    59
   * Store this argument in this Timer for later use by Timer::Schedule.
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    60
   */
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    61
  template <typename T1>
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    62
  void SetArguments (T1 a1);
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    63
  /**
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    64
   * \param a1 the first argument
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    65
   * \param a2 the second argument
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    66
   *
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    67
   * Store these arguments in this Timer for later use by Timer::Schedule.
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    68
   */
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    69
  template <typename T1, typename T2>
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    70
  void SetArguments (T1 a1, T2 a2);
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    71
  /**
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    72
   * \param a1 the first argument
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    73
   * \param a2 the second argument
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    74
   * \param a3 the third argument
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    75
   *
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    76
   * Store these arguments in this Timer for later use by Timer::Schedule.
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    77
   */
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    78
  template <typename T1, typename T2, typename T3>
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    79
  void SetArguments (T1 a1, T2 a2, T3 a3);
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    80
  /**
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    81
   * \param a1 the first argument
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    82
   * \param a2 the second argument
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    83
   * \param a3 the third argument
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    84
   * \param a4 the fourth argument
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    85
   *
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    86
   * Store these arguments in this Timer for later use by Timer::Schedule.
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    87
   */
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    88
  template <typename T1, typename T2, typename T3, typename T4>
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    89
  void SetArguments (T1 a1, T2 a2, T3 a3, T4 a4);
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    90
  /**
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    91
   * \param a1 the first argument
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    92
   * \param a2 the second argument
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    93
   * \param a3 the third argument
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    94
   * \param a4 the fourth argument
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    95
   * \param a5 the fifth argument
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    96
   *
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    97
   * Store these arguments in this Timer for later use by Timer::Schedule.
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    98
   */
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    99
  template <typename T1, typename T2, typename T3, typename T4, typename T5>
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   100
  void SetArguments (T1 a1, T2 a2, T3 a3, T4 a4, T5 a5);
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   101
  /**
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   102
   * \param a1 the first argument
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   103
   * \param a2 the second argument
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   104
   * \param a3 the third argument
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   105
   * \param a4 the fourth argument
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   106
   * \param a5 the fifth argument
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   107
   * \param a6 the sixth argument
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   108
   *
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   109
   * Store these arguments in this Timer for later use by Timer::Schedule.
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   110
   */
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   111
  template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   112
  void SetArguments (T1 a1, T2 a2, T3 a3, T4 a4, T5 a5, T6 a6);
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   113
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   114
private:
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   115
  void Expire (void);
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   116
  TimerImpl *m_impl;
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   117
  EventId m_event;
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   118
  Time m_end;
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   119
};
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   120
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   121
} // namespace ns3
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   122
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   123
#include "timer-impl.h"
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   124
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   125
namespace ns3 {
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   126
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   127
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   128
template <typename FN>
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   129
void 
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   130
Watchdog::SetFunction (FN fn)
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   131
{
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   132
  delete m_impl;
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   133
  m_impl = MakeTimerImpl (fn);
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   134
}
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   135
template <typename MEM_PTR, typename OBJ_PTR>
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   136
void 
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   137
Watchdog::SetFunction (MEM_PTR memPtr, OBJ_PTR objPtr)
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   138
{
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   139
  delete m_impl;
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   140
  m_impl = MakeTimerImpl (memPtr, objPtr);
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   141
}
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   142
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   143
template <typename T1>
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   144
void 
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   145
Watchdog::SetArguments (T1 a1)
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   146
{
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   147
  if (m_impl == 0)
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   148
    {
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   149
      NS_FATAL_ERROR ("You cannot set the arguments of a Watchdog before setting its function.");
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   150
      return;
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   151
    }
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   152
  m_impl->SetArgs (a1);
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   153
}
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   154
template <typename T1, typename T2>
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   155
void 
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   156
Watchdog::SetArguments (T1 a1, T2 a2)
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   157
{
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   158
  if (m_impl == 0)
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   159
    {
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   160
      NS_FATAL_ERROR ("You cannot set the arguments of a Watchdog before setting its function.");
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   161
      return;
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   162
    }
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   163
  m_impl->SetArgs (a1, a2);
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   164
}
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   165
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   166
template <typename T1, typename T2, typename T3>
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   167
void 
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   168
Watchdog::SetArguments (T1 a1, T2 a2, T3 a3)
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   169
{
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   170
  if (m_impl == 0)
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   171
    {
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   172
      NS_FATAL_ERROR ("You cannot set the arguments of a Watchdog before setting its function.");
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   173
      return;
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   174
    }
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   175
  m_impl->SetArgs (a1, a2, a3);
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   176
}
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   177
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   178
template <typename T1, typename T2, typename T3, typename T4>
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   179
void 
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   180
Watchdog::SetArguments (T1 a1, T2 a2, T3 a3, T4 a4)
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   181
{
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   182
  if (m_impl == 0)
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   183
    {
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   184
      NS_FATAL_ERROR ("You cannot set the arguments of a Watchdog before setting its function.");
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   185
      return;
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   186
    }
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   187
  m_impl->SetArgs (a1, a2, a3, a4);
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   188
}
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   189
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   190
template <typename T1, typename T2, typename T3, typename T4, typename T5>
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   191
void 
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   192
Watchdog::SetArguments (T1 a1, T2 a2, T3 a3, T4 a4, T5 a5)
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   193
{
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   194
  if (m_impl == 0)
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   195
    {
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   196
      NS_FATAL_ERROR ("You cannot set the arguments of a Watchdog before setting its function.");
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   197
      return;
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   198
    }
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   199
  m_impl->SetArgs (a1, a2, a3, a4, a5);
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   200
}
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   201
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   202
template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   203
void 
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   204
Watchdog::SetArguments (T1 a1, T2 a2, T3 a3, T4 a4, T5 a5, T6 a6)
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   205
{
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   206
  if (m_impl == 0)
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   207
    {
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   208
      NS_FATAL_ERROR ("You cannot set the arguments of a Watchdog before setting its function.");
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   209
      return;
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   210
    }
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   211
  m_impl->SetArgs (a1, a2, a3, a4, a5, a6);
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   212
}
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   213
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   214
} // namespace ns3
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   215
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   216
7044c1ad1d79 a Watchdog class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   217
#endif /* WATCHDOG_H */