A Discrete-Event Network Simulator
API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
simulator.h
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2005 INRIA
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License version 2 as
7  * published by the Free Software Foundation;
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17  *
18  * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
19  */
20 
21 #ifndef SIMULATOR_H
22 #define SIMULATOR_H
23 
24 #include "event-id.h"
25 #include "event-impl.h"
26 #include "make-event.h"
27 #include "nstime.h"
28 
29 #include "deprecated.h"
30 #include "object-factory.h"
31 
32 #include <stdint.h>
33 #include <string>
34 
35 namespace ns3 {
36 
37 class SimulatorImpl;
38 class Scheduler;
39 
58 class Simulator
59 {
60 public:
73  static void SetImplementation (Ptr<SimulatorImpl> impl);
74 
75  static Ptr<SimulatorImpl> GetImplementation (void);
76 
84  static void SetScheduler (ObjectFactory schedulerFactory);
85 
96  static void Destroy (void);
97 
103  static bool IsFinished (void);
104 
113  static void Run (void);
114 
120  static void Stop (void);
121 
129  static void Stop (Time const &time);
130 
145  template <typename MEM, typename OBJ>
146  static EventId Schedule (Time const &time, MEM mem_ptr, OBJ obj);
147 
155  template <typename MEM, typename OBJ, typename T1>
156  static EventId Schedule (Time const &time, MEM mem_ptr, OBJ obj, T1 a1);
157 
166  template <typename MEM, typename OBJ, typename T1, typename T2>
167  static EventId Schedule (Time const &time, MEM mem_ptr, OBJ obj, T1 a1, T2 a2);
168 
178  template <typename MEM, typename OBJ,
179  typename T1, typename T2, typename T3>
180  static EventId Schedule (Time const &time, MEM mem_ptr, OBJ obj, T1 a1, T2 a2, T3 a3);
181 
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);
195 
207  template <typename MEM, typename OBJ,
208  typename T1, typename T2, typename T3, typename T4, typename T5>
209  static EventId Schedule (Time const &time, MEM mem_ptr, OBJ obj,
210  T1 a1, T2 a2, T3 a3, T4 a4, T5 a5);
216  static EventId Schedule (Time const &time, void (*f)(void));
217 
224  template <typename U1, typename T1>
225  static EventId Schedule (Time const &time, void (*f)(U1), T1 a1);
226 
234  template <typename U1, typename U2, typename T1, typename T2>
235  static EventId Schedule (Time const &time, void (*f)(U1,U2), T1 a1, T2 a2);
236 
245  template <typename U1, typename U2, typename U3, typename T1, typename T2, typename T3>
246  static EventId Schedule (Time const &time, void (*f)(U1,U2,U3), T1 a1, T2 a2, T3 a3);
247 
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);
260 
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);
274 
285  template <typename MEM, typename OBJ>
286  static void ScheduleWithContext (uint32_t context, Time const &time, MEM mem_ptr, OBJ obj);
287 
297  template <typename MEM, typename OBJ, typename T1>
298  static void ScheduleWithContext (uint32_t context, Time const &time, MEM mem_ptr, OBJ obj, T1 a1);
299 
310  template <typename MEM, typename OBJ, typename T1, typename T2>
311  static void ScheduleWithContext (uint32_t context, Time const &time, MEM mem_ptr, OBJ obj, T1 a1, T2 a2);
312 
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);
327 
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);
343 
357  template <typename MEM, typename OBJ,
358  typename T1, typename T2, typename T3, typename T4, typename T5>
359  static void ScheduleWithContext (uint32_t context, Time const &time, MEM mem_ptr, OBJ obj,
360  T1 a1, T2 a2, T3 a3, T4 a4, T5 a5);
368  static void ScheduleWithContext (uint32_t context, Time const &time, void (*f)(void));
369 
378  template <typename U1, typename T1>
379  static void ScheduleWithContext (uint32_t context, Time const &time, void (*f)(U1), T1 a1);
380 
390  template <typename U1, typename U2, typename T1, typename T2>
391  static void ScheduleWithContext (uint32_t context, Time const &time, void (*f)(U1,U2), T1 a1, T2 a2);
392 
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);
405 
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);
420 
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);
436 
445  template <typename MEM, typename OBJ>
446  static EventId ScheduleNow (MEM mem_ptr, OBJ obj);
447 
453  template <typename MEM, typename OBJ,
454  typename T1>
455  static EventId ScheduleNow (MEM mem_ptr, OBJ obj, T1 a1);
456 
463  template <typename MEM, typename OBJ,
464  typename T1, typename T2>
465  static EventId ScheduleNow (MEM mem_ptr, OBJ obj, T1 a1, T2 a2);
466 
474  template <typename MEM, typename OBJ,
475  typename T1, typename T2, typename T3>
476  static EventId ScheduleNow (MEM mem_ptr, OBJ obj, T1 a1, T2 a2, T3 a3);
477 
486  template <typename MEM, typename OBJ,
487  typename T1, typename T2, typename T3, typename T4>
488  static EventId ScheduleNow (MEM mem_ptr, OBJ obj,
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>
501  static EventId ScheduleNow (MEM mem_ptr, OBJ obj,
502  T1 a1, T2 a2, T3 a3, T4 a4, T5 a5);
506  static EventId ScheduleNow (void (*f)(void));
507 
512  template <typename U1,
513  typename T1>
514  static EventId ScheduleNow (void (*f)(U1), T1 a1);
515 
521  template <typename U1, typename U2,
522  typename T1, typename T2>
523  static EventId ScheduleNow (void (*f)(U1,U2), T1 a1, T2 a2);
524 
531  template <typename U1, typename U2, typename U3,
532  typename T1, typename T2, typename T3>
533  static EventId ScheduleNow (void (*f)(U1,U2,U3), T1 a1, T2 a2, T3 a3);
534 
542  template <typename U1, typename U2, typename U3, typename U4,
543  typename T1, typename T2, typename T3, typename T4>
544  static EventId ScheduleNow (void (*f)(U1,U2,U3,U4), T1 a1, T2 a2, T3 a3, T4 a4);
545 
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);
557 
567  template <typename MEM, typename OBJ>
568  static EventId ScheduleDestroy (MEM mem_ptr, OBJ obj);
569 
575  template <typename MEM, typename OBJ,
576  typename T1>
577  static EventId ScheduleDestroy (MEM mem_ptr, OBJ obj, T1 a1);
578 
585  template <typename MEM, typename OBJ,
586  typename T1, typename T2>
587  static EventId ScheduleDestroy (MEM mem_ptr, OBJ obj, T1 a1, T2 a2);
588 
596  template <typename MEM, typename OBJ,
597  typename T1, typename T2, typename T3>
598  static EventId ScheduleDestroy (MEM mem_ptr, OBJ obj, T1 a1, T2 a2, T3 a3);
599 
608  template <typename MEM, typename OBJ,
609  typename T1, typename T2, typename T3, typename T4>
610  static EventId ScheduleDestroy (MEM mem_ptr, OBJ obj,
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>
623  static EventId ScheduleDestroy (MEM mem_ptr, OBJ obj,
624  T1 a1, T2 a2, T3 a3, T4 a4, T5 a5);
628  static EventId ScheduleDestroy (void (*f)(void));
629 
634  template <typename U1,
635  typename T1>
636  static EventId ScheduleDestroy (void (*f)(U1), T1 a1);
637 
643  template <typename U1, typename U2,
644  typename T1, typename T2>
645  static EventId ScheduleDestroy (void (*f)(U1,U2), T1 a1, T2 a2);
646 
653  template <typename U1, typename U2, typename U3,
654  typename T1, typename T2, typename T3>
655  static EventId ScheduleDestroy (void (*f)(U1,U2,U3), T1 a1, T2 a2, T3 a3);
656 
664  template <typename U1, typename U2, typename U3, typename U4,
665  typename T1, typename T2, typename T3, typename T4>
666  static EventId ScheduleDestroy (void (*f)(U1,U2,U3,U4), T1 a1, T2 a2, T3 a3, T4 a4);
667 
676  template <typename U1, typename U2, typename U3, typename U4, typename U5,
677  typename T1, typename T2, typename T3, typename T4, typename T5>
678  static EventId ScheduleDestroy (void (*f)(U1,U2,U3,U4,U5), T1 a1, T2 a2, T3 a3, T4 a4, T5 a5);
679 
691  static void Remove (const EventId &id);
692 
705  static void Cancel (const EventId &id);
706 
719  static bool IsExpired (const EventId &id);
720 
724  static Time Now (void);
725 
732  static Time GetDelayLeft (const EventId &id);
733 
740  static Time GetMaximumSimulationTime (void);
741 
745  static uint32_t GetContext (void);
746 
755  static EventId Schedule (Time const &time, const Ptr<EventImpl> &event);
756 
768  static void ScheduleWithContext (uint32_t context, const Time &time, EventImpl *event);
769 
777  static EventId ScheduleDestroy (const Ptr<EventImpl> &event);
778 
786  static EventId ScheduleNow (const Ptr<EventImpl> &event);
787 
792  static uint32_t GetSystemId (void);
793 private:
794  Simulator ();
795  ~Simulator ();
796 
797  static EventId DoSchedule (Time const &time, EventImpl *event);
798  static EventId DoScheduleNow (EventImpl *event);
799  static EventId DoScheduleDestroy (EventImpl *event);
800 };
801 
813 Time Now (void);
814 
815 } // namespace ns3
816 
817 namespace ns3 {
818 
819 template <typename MEM, typename OBJ>
820 EventId Simulator::Schedule (Time const &time, MEM mem_ptr, OBJ obj)
821 {
822  return DoSchedule (time, MakeEvent (mem_ptr, obj));
823 }
824 
825 
826 template <typename MEM, typename OBJ,
827  typename T1>
828 EventId Simulator::Schedule (Time const &time, MEM mem_ptr, OBJ obj, T1 a1)
829 {
830  return DoSchedule (time, MakeEvent (mem_ptr, obj, a1));
831 }
832 
833 template <typename MEM, typename OBJ,
834  typename T1, typename T2>
835 EventId Simulator::Schedule (Time const &time, MEM mem_ptr, OBJ obj, T1 a1, T2 a2)
836 {
837  return DoSchedule (time, MakeEvent (mem_ptr, obj, a1, a2));
838 }
839 
840 template <typename MEM, typename OBJ,
841  typename T1, typename T2, typename T3>
842 EventId Simulator::Schedule (Time const &time, MEM mem_ptr, OBJ obj, T1 a1, T2 a2, T3 a3)
843 {
844  return DoSchedule (time, MakeEvent (mem_ptr, obj, a1, a2, a3));
845 }
846 
847 template <typename MEM, typename OBJ,
848  typename T1, typename T2, typename T3, typename T4>
849 EventId Simulator::Schedule (Time const &time, MEM mem_ptr, OBJ obj, T1 a1, T2 a2, T3 a3, T4 a4)
850 {
851  return DoSchedule (time, MakeEvent (mem_ptr, obj, a1, a2, a3, a4));
852 }
853 
854 template <typename MEM, typename OBJ,
855  typename T1, typename T2, typename T3, typename T4, typename T5>
856 EventId Simulator::Schedule (Time const &time, MEM mem_ptr, OBJ obj,
857  T1 a1, T2 a2, T3 a3, T4 a4, T5 a5)
858 {
859  return DoSchedule (time, MakeEvent (mem_ptr, obj, a1, a2, a3, a4, a5));
860 }
861 
862 template <typename U1, typename T1>
863 EventId Simulator::Schedule (Time const &time, void (*f)(U1), T1 a1)
864 {
865  return DoSchedule (time, MakeEvent (f, a1));
866 }
867 
868 template <typename U1, typename U2,
869  typename T1, typename T2>
870 EventId Simulator::Schedule (Time const &time, void (*f)(U1,U2), T1 a1, T2 a2)
871 {
872  return DoSchedule (time, MakeEvent (f, a1, a2));
873 }
874 
875 template <typename U1, typename U2, typename U3,
876  typename T1, typename T2, typename T3>
877 EventId Simulator::Schedule (Time const &time, void (*f)(U1,U2,U3), T1 a1, T2 a2, T3 a3)
878 {
879  return DoSchedule (time, MakeEvent (f, a1, a2, a3));
880 }
881 
882 template <typename U1, typename U2, typename U3, typename U4,
883  typename T1, typename T2, typename T3, typename T4>
884 EventId Simulator::Schedule (Time const &time, void (*f)(U1,U2,U3,U4), T1 a1, T2 a2, T3 a3, T4 a4)
885 {
886  return DoSchedule (time, MakeEvent (f, a1, a2, a3, a4));
887 }
888 
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)
892 {
893  return DoSchedule (time, MakeEvent (f, a1, a2, a3, a4, a5));
894 }
895 
896 
897 
898 
899 template <typename MEM, typename OBJ>
900 void Simulator::ScheduleWithContext (uint32_t context, Time const &time, MEM mem_ptr, OBJ obj)
901 {
902  ScheduleWithContext (context, time, MakeEvent (mem_ptr, obj));
903 }
904 
905 
906 template <typename MEM, typename OBJ,
907  typename T1>
908 void Simulator::ScheduleWithContext (uint32_t context, Time const &time, MEM mem_ptr, OBJ obj, T1 a1)
909 {
910  return ScheduleWithContext (context, time, MakeEvent (mem_ptr, obj, a1));
911 }
912 
913 template <typename MEM, typename OBJ,
914  typename T1, typename T2>
915 void Simulator::ScheduleWithContext (uint32_t context, Time const &time, MEM mem_ptr, OBJ obj, T1 a1, T2 a2)
916 {
917  return ScheduleWithContext (context, time, MakeEvent (mem_ptr, obj, a1, a2));
918 }
919 
920 template <typename MEM, typename OBJ,
921  typename T1, typename T2, typename T3>
922 void Simulator::ScheduleWithContext (uint32_t context, Time const &time, MEM mem_ptr, OBJ obj, T1 a1, T2 a2, T3 a3)
923 {
924  return ScheduleWithContext (context, time, MakeEvent (mem_ptr, obj, a1, a2, a3));
925 }
926 
927 template <typename MEM, typename OBJ,
928  typename T1, typename T2, typename T3, typename T4>
929 void Simulator::ScheduleWithContext (uint32_t context, Time const &time, MEM mem_ptr, OBJ obj, T1 a1, T2 a2, T3 a3, T4 a4)
930 {
931  return ScheduleWithContext (context, time, MakeEvent (mem_ptr, obj, a1, a2, a3, a4));
932 }
933 
934 template <typename MEM, typename OBJ,
935  typename T1, typename T2, typename T3, typename T4, typename T5>
936 void Simulator::ScheduleWithContext (uint32_t context, Time const &time, MEM mem_ptr, OBJ obj,
937  T1 a1, T2 a2, T3 a3, T4 a4, T5 a5)
938 {
939  return ScheduleWithContext (context, time, MakeEvent (mem_ptr, obj, a1, a2, a3, a4, a5));
940 }
941 
942 template <typename U1, typename T1>
943 void Simulator::ScheduleWithContext (uint32_t context, Time const &time, void (*f)(U1), T1 a1)
944 {
945  return ScheduleWithContext (context, time, MakeEvent (f, a1));
946 }
947 
948 template <typename U1, typename U2,
949  typename T1, typename T2>
950 void Simulator::ScheduleWithContext (uint32_t context, Time const &time, void (*f)(U1,U2), T1 a1, T2 a2)
951 {
952  return ScheduleWithContext (context, time, MakeEvent (f, a1, a2));
953 }
954 
955 template <typename U1, typename U2, typename U3,
956  typename T1, typename T2, typename T3>
957 void Simulator::ScheduleWithContext (uint32_t context, Time const &time, void (*f)(U1,U2,U3), T1 a1, T2 a2, T3 a3)
958 {
959  return ScheduleWithContext (context, time, MakeEvent (f, a1, a2, a3));
960 }
961 
962 template <typename U1, typename U2, typename U3, typename U4,
963  typename T1, typename T2, typename T3, typename T4>
964 void Simulator::ScheduleWithContext (uint32_t context, Time const &time, void (*f)(U1,U2,U3,U4), T1 a1, T2 a2, T3 a3, T4 a4)
965 {
966  return ScheduleWithContext (context, time, MakeEvent (f, a1, a2, a3, a4));
967 }
968 
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)
972 {
973  return ScheduleWithContext (context, time, MakeEvent (f, a1, a2, a3, a4, a5));
974 }
975 
976 
977 
978 
979 template <typename MEM, typename OBJ>
980 EventId
981 Simulator::ScheduleNow (MEM mem_ptr, OBJ obj)
982 {
983  return DoScheduleNow (MakeEvent (mem_ptr, obj));
984 }
985 
986 
987 template <typename MEM, typename OBJ,
988  typename T1>
989 EventId
990 Simulator::ScheduleNow (MEM mem_ptr, OBJ obj, T1 a1)
991 {
992  return DoScheduleNow (MakeEvent (mem_ptr, obj, a1));
993 }
994 
995 template <typename MEM, typename OBJ,
996  typename T1, typename T2>
997 EventId
998 Simulator::ScheduleNow (MEM mem_ptr, OBJ obj, T1 a1, T2 a2)
999 {
1000  return DoScheduleNow (MakeEvent (mem_ptr, obj, a1, a2));
1001 }
1002 
1003 template <typename MEM, typename OBJ,
1004  typename T1, typename T2, typename T3>
1005 EventId
1006 Simulator::ScheduleNow (MEM mem_ptr, OBJ obj, T1 a1, T2 a2, T3 a3)
1007 {
1008  return DoScheduleNow (MakeEvent (mem_ptr, obj, a1, a2, a3));
1009 }
1010 
1011 template <typename MEM, typename OBJ,
1012  typename T1, typename T2, typename T3, typename T4>
1013 EventId
1014 Simulator::ScheduleNow (MEM mem_ptr, OBJ obj, T1 a1, T2 a2, T3 a3, T4 a4)
1015 {
1016  return DoScheduleNow (MakeEvent (mem_ptr, obj, a1, a2, a3, a4));
1017 }
1018 
1019 template <typename MEM, typename OBJ,
1020  typename T1, typename T2, typename T3, typename T4, typename T5>
1021 EventId
1022 Simulator::ScheduleNow (MEM mem_ptr, OBJ obj,
1023  T1 a1, T2 a2, T3 a3, T4 a4, T5 a5)
1024 {
1025  return DoScheduleNow (MakeEvent (mem_ptr, obj, a1, a2, a3, a4, a5));
1026 }
1027 
1028 template <typename U1,
1029  typename T1>
1030 EventId
1031 Simulator::ScheduleNow (void (*f)(U1), T1 a1)
1032 {
1033  return DoScheduleNow (MakeEvent (f, a1));
1034 }
1035 
1036 template <typename U1, typename U2,
1037  typename T1, typename T2>
1038 EventId
1039 Simulator::ScheduleNow (void (*f)(U1,U2), T1 a1, T2 a2)
1040 {
1041  return DoScheduleNow (MakeEvent (f, a1, a2));
1042 }
1043 
1044 template <typename U1, typename U2, typename U3,
1045  typename T1, typename T2, typename T3>
1046 EventId
1047 Simulator::ScheduleNow (void (*f)(U1,U2,U3), T1 a1, T2 a2, T3 a3)
1048 {
1049  return DoScheduleNow (MakeEvent (f, a1, a2, a3));
1050 }
1051 
1052 template <typename U1, typename U2, typename U3, typename U4,
1053  typename T1, typename T2, typename T3, typename T4>
1054 EventId
1055 Simulator::ScheduleNow (void (*f)(U1,U2,U3,U4), T1 a1, T2 a2, T3 a3, T4 a4)
1056 {
1057  return DoScheduleNow (MakeEvent (f, a1, a2, a3, a4));
1058 }
1059 
1060 template <typename U1, typename U2, typename U3, typename U4, typename U5,
1061  typename T1, typename T2, typename T3, typename T4, typename T5>
1062 EventId
1063 Simulator::ScheduleNow (void (*f)(U1,U2,U3,U4,U5), T1 a1, T2 a2, T3 a3, T4 a4, T5 a5)
1064 {
1065  return DoScheduleNow (MakeEvent (f, a1, a2, a3, a4, a5));
1066 }
1067 
1068 
1069 
1070 template <typename MEM, typename OBJ>
1071 EventId
1072 Simulator::ScheduleDestroy (MEM mem_ptr, OBJ obj)
1073 {
1074  return DoScheduleDestroy (MakeEvent (mem_ptr, obj));
1075 }
1076 
1077 
1078 template <typename MEM, typename OBJ,
1079  typename T1>
1080 EventId
1081 Simulator::ScheduleDestroy (MEM mem_ptr, OBJ obj, T1 a1)
1082 {
1083  return DoScheduleDestroy (MakeEvent (mem_ptr, obj, a1));
1084 }
1085 
1086 template <typename MEM, typename OBJ,
1087  typename T1, typename T2>
1088 EventId
1089 Simulator::ScheduleDestroy (MEM mem_ptr, OBJ obj, T1 a1, T2 a2)
1090 {
1091  return DoScheduleDestroy (MakeEvent (mem_ptr, obj, a1, a2));
1092 }
1093 
1094 template <typename MEM, typename OBJ,
1095  typename T1, typename T2, typename T3>
1096 EventId
1097 Simulator::ScheduleDestroy (MEM mem_ptr, OBJ obj, T1 a1, T2 a2, T3 a3)
1098 {
1099  return DoScheduleDestroy (MakeEvent (mem_ptr, obj, a1, a2, a3));
1100 }
1101 
1102 template <typename MEM, typename OBJ,
1103  typename T1, typename T2, typename T3, typename T4>
1104 EventId
1105 Simulator::ScheduleDestroy (MEM mem_ptr, OBJ obj, T1 a1, T2 a2, T3 a3, T4 a4)
1106 {
1107  return DoScheduleDestroy (MakeEvent (mem_ptr, obj, a1, a2, a3, a4));
1108 }
1109 
1110 template <typename MEM, typename OBJ,
1111  typename T1, typename T2, typename T3, typename T4, typename T5>
1112 EventId
1113 Simulator::ScheduleDestroy (MEM mem_ptr, OBJ obj,
1114  T1 a1, T2 a2, T3 a3, T4 a4, T5 a5)
1115 {
1116  return DoScheduleDestroy (MakeEvent (mem_ptr, obj, a1, a2, a3, a4, a5));
1117 }
1118 
1119 template <typename U1,
1120  typename T1>
1121 EventId
1122 Simulator::ScheduleDestroy (void (*f)(U1), T1 a1)
1123 {
1124  return DoScheduleDestroy (MakeEvent (f, a1));
1125 }
1126 
1127 template <typename U1, typename U2,
1128  typename T1, typename T2>
1129 EventId
1130 Simulator::ScheduleDestroy (void (*f)(U1,U2), T1 a1, T2 a2)
1131 {
1132  return DoScheduleDestroy (MakeEvent (f, a1, a2));
1133 }
1134 
1135 template <typename U1, typename U2, typename U3,
1136  typename T1, typename T2, typename T3>
1137 EventId
1138 Simulator::ScheduleDestroy (void (*f)(U1,U2,U3), T1 a1, T2 a2, T3 a3)
1139 {
1140  return DoScheduleDestroy (MakeEvent (f, a1, a2, a3));
1141 }
1142 
1143 template <typename U1, typename U2, typename U3, typename U4,
1144  typename T1, typename T2, typename T3, typename T4>
1145 EventId
1146 Simulator::ScheduleDestroy (void (*f)(U1,U2,U3,U4), T1 a1, T2 a2, T3 a3, T4 a4)
1147 {
1148  return DoScheduleDestroy (MakeEvent (f, a1, a2, a3, a4));
1149 }
1150 
1151 template <typename U1, typename U2, typename U3, typename U4, typename U5,
1152  typename T1, typename T2, typename T3, typename T4, typename T5>
1153 EventId
1154 Simulator::ScheduleDestroy (void (*f)(U1,U2,U3,U4,U5), T1 a1, T2 a2, T3 a3, T4 a4, T5 a5)
1155 {
1156  return DoScheduleDestroy (MakeEvent (f, a1, a2, a3, a4, a5));
1157 }
1158 
1159 } // namespace ns3
1160 
1161 #endif /* SIMULATOR_H */
static Time GetDelayLeft(const EventId &id)
Definition: simulator.cc:188
keep track of time unit.
Definition: nstime.h:149
smart pointer class similar to boost::intrusive_ptr
Definition: ptr.h:59
Control the scheduling of simulation events.
Definition: simulator.h:58
static void SetImplementation(Ptr< SimulatorImpl > impl)
Definition: simulator.cc:320
static uint32_t GetSystemId(void)
Definition: simulator.cc:305
static uint32_t GetContext(void)
Definition: simulator.cc:299
static void Run(void)
Definition: simulator.cc:157
static void Cancel(const EventId &id)
Definition: simulator.cc:267
static EventId Schedule(Time const &time, MEM mem_ptr, OBJ obj)
Definition: simulator.h:820
static void ScheduleWithContext(uint32_t context, Time const &time, MEM mem_ptr, OBJ obj)
Definition: simulator.h:900
static void Destroy(void)
Definition: simulator.cc:121
static void Remove(const EventId &id)
Definition: simulator.cc:257
static bool IsExpired(const EventId &id)
Definition: simulator.cc:277
static EventId ScheduleNow(MEM mem_ptr, OBJ obj)
Definition: simulator.h:981
static void SetScheduler(ObjectFactory schedulerFactory)
Definition: simulator.cc:143
static Time Now(void)
Definition: simulator.cc:179
instantiate subclasses of ns3::Object.
a simulation event
Definition: event-impl.h:39
an identifier for simulation events.
Definition: event-id.h:46
static void Stop(void)
Definition: simulator.cc:164
Time Now(void)
create an ns3::Time instance which contains the current simulation time.
Definition: simulator.cc:286
static bool IsFinished(void)
Definition: simulator.cc:150
static EventId ScheduleDestroy(MEM mem_ptr, OBJ obj)
Definition: simulator.h:1072
static Time GetMaximumSimulationTime(void)
Definition: simulator.cc:292