00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #ifndef SST_EVENT_H
00014 #define SST_EVENT_H
00015
00016 #include <sst/core/eventFunctor.h>
00017 #include <sst/core/activity.h>
00018 #include <sst/core/link.h>
00019
00020
00021 namespace SST {
00022
00023 class Link;
00024
00025
00026
00027
00028 typedef union {
00029 Link* ptr;
00030 LinkId_t id;
00031 } LinkUnion;
00032
00033
00034 class NewEvent : public Activity {
00035
00036 public:
00037 NewEvent() : Activity() {}
00038 ~NewEvent() {}
00039
00040 void execute(void);
00041
00042 private:
00043 LinkUnion link;
00044
00045 };
00046
00047
00048
00049 class Event : public Activity {
00050 public:
00051
00052 Event() : Activity() {
00053 setPriority(50);
00054 }
00055 virtual ~Event() = 0;
00056
00057 inline void execute(void) {
00058 delivery_link->deliverEvent(this);
00059 }
00060
00061 private:
00062
00063 Link* delivery_link;
00064 LinkId_t link_id;
00065
00066 friend class boost::serialization::access;
00067 template<class Archive>
00068 void
00069 serialize(Archive & ar, const unsigned int version )
00070 {
00071 }
00072 };
00073
00074 }
00075
00076 #endif // SST_EVENT_H