25 #include "event-impl.h" 
   26 #include "make-event.h" 
   29 #include "deprecated.h" 
   30 #include "object-factory.h" 
  113   static void Run (
void);
 
  120   static void Stop (
void);
 
  129   static void Stop (
Time const &time);
 
  145   template <
typename MEM, 
typename OBJ>
 
  155   template <
typename MEM, 
typename OBJ, 
typename T1>
 
  166   template <
typename MEM, 
typename OBJ, 
typename T1, 
typename T2>
 
  178   template <
typename MEM, 
typename OBJ, 
 
  179             typename T1, 
typename T2, 
typename T3>
 
  192   template <
typename MEM, 
typename OBJ, 
 
  193             typename T1, 
typename T2, 
typename T3, 
typename T4>
 
  194   static EventId Schedule (
Time const &time, MEM mem_ptr, OBJ obj, T1 a1, T2 a2, T3 a3, T4 a4);
 
  207   template <
typename MEM, 
typename OBJ, 
 
  208             typename T1, 
typename T2, 
typename T3, 
typename T4, 
typename T5>
 
  210                            T1 a1, T2 a2, T3 a3, T4 a4, T5 a5);
 
  224   template <
typename U1, 
typename T1>
 
  234   template <
typename U1, 
typename U2, 
typename T1, 
typename T2>
 
  245   template <
typename U1, 
typename U2, 
typename U3, 
typename T1, 
typename T2, 
typename T3>
 
  257   template <
typename U1, 
typename U2, 
typename U3, 
typename U4, 
 
  258             typename T1, 
typename T2, 
typename T3, 
typename T4>
 
  259   static EventId Schedule (
Time const &time, 
void (*f)(U1,U2,U3,U4), T1 a1, T2 a2, T3 a3, T4 a4);
 
  271   template <
typename U1, 
typename U2, 
typename U3, 
typename U4, 
typename U5,
 
  272             typename T1, 
typename T2, 
typename T3, 
typename T4, 
typename T5>
 
  273   static EventId Schedule (
Time const &time, 
void (*f)(U1,U2,U3,U4,U5), T1 a1, T2 a2, T3 a3, T4 a4, T5 a5);
 
  285   template <
typename MEM, 
typename OBJ>
 
  297   template <
typename MEM, 
typename OBJ, 
typename T1>
 
  310   template <
typename MEM, 
typename OBJ, 
typename T1, 
typename T2>
 
  324   template <
typename MEM, 
typename OBJ, 
 
  325             typename T1, 
typename T2, 
typename T3>
 
  326   static void ScheduleWithContext (uint32_t context, 
Time const &time, MEM mem_ptr, OBJ obj, T1 a1, T2 a2, T3 a3);
 
  340   template <
typename MEM, 
typename OBJ, 
 
  341             typename T1, 
typename T2, 
typename T3, 
typename T4>
 
  342   static void ScheduleWithContext (uint32_t context, 
Time const &time, MEM mem_ptr, OBJ obj, T1 a1, T2 a2, T3 a3, T4 a4);
 
  357   template <
typename MEM, 
typename OBJ, 
 
  358             typename T1, 
typename T2, 
typename T3, 
typename T4, 
typename T5>
 
  360                                    T1 a1, T2 a2, T3 a3, T4 a4, T5 a5);
 
  378   template <
typename U1, 
typename T1>
 
  390   template <
typename U1, 
typename U2, 
typename T1, 
typename T2>
 
  403   template <
typename U1, 
typename U2, 
typename U3, 
typename T1, 
typename T2, 
typename T3>
 
  404   static void ScheduleWithContext (uint32_t context, 
Time const &time, 
void (*f)(U1,U2,U3), T1 a1, T2 a2, T3 a3);
 
  417   template <
typename U1, 
typename U2, 
typename U3, 
typename U4, 
 
  418             typename T1, 
typename T2, 
typename T3, 
typename T4>
 
  419   static void ScheduleWithContext (uint32_t context, 
Time const &time, 
void (*f)(U1,U2,U3,U4), T1 a1, T2 a2, T3 a3, T4 a4);
 
  433   template <
typename U1, 
typename U2, 
typename U3, 
typename U4, 
typename U5,
 
  434             typename T1, 
typename T2, 
typename T3, 
typename T4, 
typename T5>
 
  435   static void ScheduleWithContext (uint32_t context, 
Time const &time, 
void (*f)(U1,U2,U3,U4,U5), T1 a1, T2 a2, T3 a3, T4 a4, T5 a5);
 
  445   template <
typename MEM, 
typename OBJ>
 
  453   template <
typename MEM, 
typename OBJ, 
 
  463   template <
typename MEM, 
typename OBJ, 
 
  464             typename T1, 
typename T2>
 
  474   template <
typename MEM, 
typename OBJ, 
 
  475             typename T1, 
typename T2, 
typename T3>
 
  486   template <
typename MEM, 
typename OBJ, 
 
  487             typename T1, 
typename T2, 
typename T3, 
typename T4>
 
  489                               T1 a1, T2 a2, T3 a3, T4 a4);
 
  499   template <
typename MEM, 
typename OBJ, 
 
  500             typename T1, 
typename T2, 
typename T3, 
typename T4, 
typename T5>
 
  502                               T1 a1, T2 a2, T3 a3, T4 a4, T5 a5);
 
  512   template <
typename U1,
 
  521   template <
typename U1, 
typename U2,
 
  522             typename T1, 
typename T2>
 
  531   template <
typename U1, 
typename U2, 
typename U3,
 
  532             typename T1, 
typename T2, 
typename T3>
 
  542   template <
typename U1, 
typename U2, 
typename U3, 
typename U4,
 
  543             typename T1, 
typename T2, 
typename T3, 
typename T4>
 
  554   template <
typename U1, 
typename U2, 
typename U3, 
typename U4, 
typename U5,
 
  555             typename T1, 
typename T2, 
typename T3, 
typename T4, 
typename T5>
 
  556   static EventId ScheduleNow (
void (*f)(U1,U2,U3,U4,U5), T1 a1, T2 a2, T3 a3, T4 a4, T5 a5);
 
  567   template <
typename MEM, 
typename OBJ>
 
  575   template <
typename MEM, 
typename OBJ, 
 
  585   template <
typename MEM, 
typename OBJ,
 
  586             typename T1, 
typename T2>
 
  596   template <
typename MEM, 
typename OBJ, 
 
  597             typename T1, 
typename T2, 
typename T3>
 
  608   template <
typename MEM, 
typename OBJ, 
 
  609             typename T1, 
typename T2, 
typename T3, 
typename T4>
 
  611                                   T1 a1, T2 a2, T3 a3, T4 a4);
 
  621   template <
typename MEM, 
typename OBJ, 
 
  622             typename T1, 
typename T2, 
typename T3, 
typename T4, 
typename T5>
 
  624                                   T1 a1, T2 a2, T3 a3, T4 a4, T5 a5);
 
  634   template <
typename U1,
 
  643   template <
typename U1, 
typename U2,
 
  644             typename T1, 
typename T2>
 
  653   template <
typename U1, 
typename U2, 
typename U3,
 
  654             typename T1, 
typename T2, 
typename T3>
 
  664   template <
typename U1, 
typename U2, 
typename U3, 
typename U4,
 
  665             typename T1, 
typename T2, 
typename T3, 
typename T4>
 
  676   template <
typename U1, 
typename U2, 
typename U3, 
typename U4, 
typename U5,
 
  677             typename T1, 
typename T2, 
typename T3, 
typename T4, 
typename T5>
 
  819 template <
typename MEM, 
typename OBJ>
 
  822   return DoSchedule (time, MakeEvent (mem_ptr, obj));
 
  826 template <
typename MEM, 
typename OBJ,
 
  830   return DoSchedule (time, MakeEvent (mem_ptr, obj, a1));
 
  833 template <
typename MEM, 
typename OBJ, 
 
  834           typename T1, 
typename T2>
 
  837   return DoSchedule (time, MakeEvent (mem_ptr, obj, a1, a2));
 
  840 template <
typename MEM, 
typename OBJ,
 
  841           typename T1, 
typename T2, 
typename T3>
 
  844   return DoSchedule (time, MakeEvent (mem_ptr, obj, a1, a2, a3));
 
  847 template <
typename MEM, 
typename OBJ, 
 
  848           typename T1, 
typename T2, 
typename T3, 
typename T4>
 
  851   return DoSchedule (time, MakeEvent (mem_ptr, obj, a1, a2, a3, a4));
 
  854 template <
typename MEM, 
typename OBJ, 
 
  855           typename T1, 
typename T2, 
typename T3, 
typename T4, 
typename T5>
 
  857                              T1 a1, T2 a2, T3 a3, T4 a4, T5 a5) 
 
  859   return DoSchedule (time, MakeEvent (mem_ptr, obj, a1, a2, a3, a4, a5));
 
  862 template <
typename U1, 
typename T1>
 
  865   return DoSchedule (time, MakeEvent (f, a1));
 
  868 template <
typename U1, 
typename U2, 
 
  869           typename T1, 
typename T2>
 
  872   return DoSchedule (time, MakeEvent (f, a1, a2));
 
  875 template <
typename U1, 
typename U2, 
typename U3,
 
  876           typename T1, 
typename T2, 
typename T3>
 
  879   return DoSchedule (time, MakeEvent (f, a1, a2, a3));
 
  882 template <
typename U1, 
typename U2, 
typename U3, 
typename U4,
 
  883           typename T1, 
typename T2, 
typename T3, 
typename T4>
 
  886   return DoSchedule (time, MakeEvent (f, a1, a2, a3, a4));
 
  889 template <
typename U1, 
typename U2, 
typename U3, 
typename U4, 
typename U5,
 
  890           typename T1, 
typename T2, 
typename T3, 
typename T4, 
typename T5>
 
  891 EventId Simulator::Schedule (
Time const &time, 
void (*f)(U1,U2,U3,U4,U5), T1 a1, T2 a2, T3 a3, T4 a4, T5 a5)
 
  893   return DoSchedule (time, MakeEvent (f, a1, a2, a3, a4, a5));
 
  899 template <
typename MEM, 
typename OBJ>
 
  906 template <
typename MEM, 
typename OBJ,
 
  913 template <
typename MEM, 
typename OBJ,
 
  914           typename T1, 
typename T2>
 
  920 template <
typename MEM, 
typename OBJ,
 
  921           typename T1, 
typename T2, 
typename T3>
 
  927 template <
typename MEM, 
typename OBJ,
 
  928           typename T1, 
typename T2, 
typename T3, 
typename T4>
 
  934 template <
typename MEM, 
typename OBJ,
 
  935           typename T1, 
typename T2, 
typename T3, 
typename T4, 
typename T5>
 
  937                                      T1 a1, T2 a2, T3 a3, T4 a4, T5 a5)
 
  942 template <
typename U1, 
typename T1>
 
  948 template <
typename U1, 
typename U2,
 
  949           typename T1, 
typename T2>
 
  955 template <
typename U1, 
typename U2, 
typename U3,
 
  956           typename T1, 
typename T2, 
typename T3>
 
  962 template <
typename U1, 
typename U2, 
typename U3, 
typename U4,
 
  963           typename T1, 
typename T2, 
typename T3, 
typename T4>
 
  969 template <
typename U1, 
typename U2, 
typename U3, 
typename U4, 
typename U5,
 
  970           typename T1, 
typename T2, 
typename T3, 
typename T4, 
typename T5>
 
  971 void Simulator::ScheduleWithContext (uint32_t context, 
Time const &time, 
void (*f)(U1,U2,U3,U4,U5), T1 a1, T2 a2, T3 a3, T4 a4, T5 a5)
 
  979 template <
typename MEM, 
typename OBJ>
 
  983   return DoScheduleNow (MakeEvent (mem_ptr, obj));
 
  987 template <
typename MEM, 
typename OBJ, 
 
  992   return DoScheduleNow (MakeEvent (mem_ptr, obj, a1));
 
  995 template <
typename MEM, 
typename OBJ, 
 
  996           typename T1, 
typename T2>
 
 1000   return DoScheduleNow (MakeEvent (mem_ptr, obj, a1, a2));
 
 1003 template <
typename MEM, 
typename OBJ, 
 
 1004           typename T1, 
typename T2, 
typename T3>
 
 1008   return DoScheduleNow (MakeEvent (mem_ptr, obj, a1, a2, a3));
 
 1011 template <
typename MEM, 
typename OBJ, 
 
 1012           typename T1, 
typename T2, 
typename T3, 
typename T4>
 
 1016   return DoScheduleNow (MakeEvent (mem_ptr, obj, a1, a2, a3, a4));
 
 1019 template <
typename MEM, 
typename OBJ, 
 
 1020           typename T1, 
typename T2, 
typename T3, 
typename T4, 
typename T5>
 
 1023                         T1 a1, T2 a2, T3 a3, T4 a4, T5 a5) 
 
 1025   return DoScheduleNow (MakeEvent (mem_ptr, obj, a1, a2, a3, a4, a5));
 
 1028 template <
typename U1,
 
 1033   return DoScheduleNow (MakeEvent (f, a1));
 
 1036 template <
typename U1, 
typename U2,
 
 1037           typename T1, 
typename T2>
 
 1041   return DoScheduleNow (MakeEvent (f, a1, a2));
 
 1044 template <
typename U1, 
typename U2, 
typename U3,
 
 1045           typename T1, 
typename T2, 
typename T3>
 
 1049   return DoScheduleNow (MakeEvent (f, a1, a2, a3));
 
 1052 template <
typename U1, 
typename U2, 
typename U3, 
typename U4,
 
 1053           typename T1, 
typename T2, 
typename T3, 
typename T4>
 
 1057   return DoScheduleNow (MakeEvent (f, a1, a2, a3, a4));
 
 1060 template <
typename U1, 
typename U2, 
typename U3, 
typename U4, 
typename U5,
 
 1061           typename T1, 
typename T2, 
typename T3, 
typename T4, 
typename T5>
 
 1065   return DoScheduleNow (MakeEvent (f, a1, a2, a3, a4, a5));
 
 1070 template <
typename MEM, 
typename OBJ>
 
 1074   return DoScheduleDestroy (MakeEvent (mem_ptr, obj));
 
 1078 template <
typename MEM, 
typename OBJ, 
 
 1083   return DoScheduleDestroy (MakeEvent (mem_ptr, obj, a1));
 
 1086 template <
typename MEM, 
typename OBJ, 
 
 1087           typename T1, 
typename T2>
 
 1091   return DoScheduleDestroy (MakeEvent (mem_ptr, obj, a1, a2));
 
 1094 template <
typename MEM, 
typename OBJ, 
 
 1095           typename T1, 
typename T2, 
typename T3>
 
 1099   return DoScheduleDestroy (MakeEvent (mem_ptr, obj, a1, a2, a3));
 
 1102 template <
typename MEM, 
typename OBJ,
 
 1103           typename T1, 
typename T2, 
typename T3, 
typename T4>
 
 1107   return DoScheduleDestroy (MakeEvent (mem_ptr, obj, a1, a2, a3, a4));
 
 1110 template <
typename MEM, 
typename OBJ, 
 
 1111           typename T1, 
typename T2, 
typename T3, 
typename T4, 
typename T5>
 
 1114                             T1 a1, T2 a2, T3 a3, T4 a4, T5 a5) 
 
 1116   return DoScheduleDestroy (MakeEvent (mem_ptr, obj, a1, a2, a3, a4, a5));
 
 1119 template <
typename U1,
 
 1124   return DoScheduleDestroy (MakeEvent (f, a1));
 
 1127 template <
typename U1, 
typename U2,
 
 1128           typename T1, 
typename T2>
 
 1132   return DoScheduleDestroy (MakeEvent (f, a1, a2));
 
 1135 template <
typename U1, 
typename U2, 
typename U3,
 
 1136           typename T1, 
typename T2, 
typename T3>
 
 1140   return DoScheduleDestroy (MakeEvent (f, a1, a2, a3));
 
 1143 template <
typename U1, 
typename U2, 
typename U3, 
typename U4,
 
 1144           typename T1, 
typename T2, 
typename T3, 
typename T4>
 
 1148   return DoScheduleDestroy (MakeEvent (f, a1, a2, a3, a4));
 
 1151 template <
typename U1, 
typename U2, 
typename U3, 
typename U4, 
typename U5,
 
 1152           typename T1, 
typename T2, 
typename T3, 
typename T4, 
typename T5>
 
 1156   return DoScheduleDestroy (MakeEvent (f, a1, a2, a3, a4, a5));
 
static Time GetDelayLeft(const EventId &id)
 
smart pointer class similar to boost::intrusive_ptr 
 
Control the scheduling of simulation events. 
 
static void SetImplementation(Ptr< SimulatorImpl > impl)
 
static uint32_t GetSystemId(void)
 
static uint32_t GetContext(void)
 
static void Cancel(const EventId &id)
 
static EventId Schedule(Time const &time, MEM mem_ptr, OBJ obj)
 
static void ScheduleWithContext(uint32_t context, Time const &time, MEM mem_ptr, OBJ obj)
 
static void Destroy(void)
 
static void Remove(const EventId &id)
 
static bool IsExpired(const EventId &id)
 
static EventId ScheduleNow(MEM mem_ptr, OBJ obj)
 
static void SetScheduler(ObjectFactory schedulerFactory)
 
instantiate subclasses of ns3::Object. 
 
an identifier for simulation events. 
 
Time Now(void)
create an ns3::Time instance which contains the current simulation time. 
 
static bool IsFinished(void)
 
static EventId ScheduleDestroy(MEM mem_ptr, OBJ obj)
 
static Time GetMaximumSimulationTime(void)