00001
00002 #ifndef INCLUDED_EventGeneratorBase_h_
00003 #define INCLUDED_EventGeneratorBase_h_
00004
00005 #include "Behaviors/BehaviorBase.h"
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 class EventGeneratorBase : public BehaviorBase {
00022 public:
00023
00024
00025
00026
00027 virtual ~EventGeneratorBase() {}
00028
00029 virtual void DoStart();
00030
00031 virtual void DoStop();
00032
00033
00034
00035
00036
00037
00038 virtual void processEvent(const EventBase& event);
00039
00040
00041
00042
00043
00044
00045 virtual EventBase::EventGeneratorID_t getGeneratorID() const { return myGenID; }
00046
00047 virtual void setGeneratorID(EventBase::EventGeneratorID_t gid) { myGenID=gid; }
00048
00049
00050 virtual unsigned int getSourceID() const { return mySourceID; }
00051
00052 virtual void setSourceID(unsigned int sid) { mySourceID=sid; }
00053
00054
00055 virtual bool hasListeners() const;
00056
00057
00058
00059
00060
00061
00062
00063 enum specificity_t {
00064 GENERATOR,
00065 SOURCE,
00066 TYPE
00067 };
00068
00069 virtual specificity_t getSpecificity() const { return specificity; }
00070
00071
00072 virtual void setAutoListen(EventBase::EventGeneratorID_t gid);
00073
00074 virtual void setAutoListen(EventBase::EventGeneratorID_t gid, unsigned int sid);
00075
00076 virtual void setAutoListen(EventBase::EventGeneratorID_t gid, unsigned int sid, EventBase::EventTypeID_t tid);
00077
00078 virtual void unsetAutoListen();
00079
00080
00081 virtual EventBase::EventGeneratorID_t getListenGeneratorID() const { return srcGenID; }
00082
00083 virtual unsigned int getListenSourceID() const { return srcSourceID; }
00084
00085 virtual EventBase::EventTypeID_t getListenTypeID() const { return srcTypeID; }
00086
00087
00088
00089 protected:
00090
00091
00092 EventGeneratorBase(const std::string& classname, const std::string& instancename, EventBase::EventGeneratorID_t mgid, unsigned int msid)
00093 : BehaviorBase(classname,instancename), myGenID(mgid), mySourceID(msid), autoListen(false), isListening(false), srcGenID(EventBase::numEGIDs), srcSourceID(), srcTypeID(), specificity()
00094 {}
00095 EventGeneratorBase(const std::string& classname, const std::string& instancename, EventBase::EventGeneratorID_t mgid, unsigned int msid,EventBase::EventGeneratorID_t srcgid)
00096 : BehaviorBase(classname,instancename), myGenID(mgid), mySourceID(msid), autoListen(srcgid!=EventBase::numEGIDs), isListening(false), srcGenID(srcgid), srcSourceID(), srcTypeID(), specificity(GENERATOR)
00097 {}
00098 EventGeneratorBase(const std::string& classname, const std::string& instancename, EventBase::EventGeneratorID_t mgid, unsigned int msid,EventBase::EventGeneratorID_t srcgid, unsigned int srcsid)
00099 : BehaviorBase(classname,instancename), myGenID(mgid), mySourceID(msid), autoListen(srcgid!=EventBase::numEGIDs), isListening(false), srcGenID(srcgid), srcSourceID(srcsid), srcTypeID(), specificity(SOURCE)
00100 {}
00101 EventGeneratorBase(const std::string& classname, const std::string& instancename, EventBase::EventGeneratorID_t mgid, unsigned int msid,EventBase::EventGeneratorID_t srcgid, unsigned int srcsid, EventBase::EventTypeID_t srctype)
00102 : BehaviorBase(classname,instancename), myGenID(mgid), mySourceID(msid), autoListen(srcgid!=EventBase::numEGIDs), isListening(false), srcGenID(srcgid), srcSourceID(srcsid), srcTypeID(srctype), specificity(TYPE)
00103 {}
00104
00105
00106
00107 virtual void addSrcListener();
00108
00109
00110 virtual void removeSrcListener();
00111
00112 EventBase::EventGeneratorID_t myGenID;
00113 unsigned int mySourceID;
00114 bool autoListen;
00115 bool isListening;
00116 EventBase::EventGeneratorID_t srcGenID;
00117 unsigned int srcSourceID;
00118 EventBase::EventTypeID_t srcTypeID;
00119 specificity_t specificity;
00120 };
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133 #endif