EventGeneratorBase.ccGo to the documentation of this file.00001 #include "EventGeneratorBase.h"
00002 #include "Events/EventRouter.h"
00003
00004 using namespace std;
00005
00006 void
00007 EventGeneratorBase::DoStart() {
00008 BehaviorBase::DoStart();
00009 if(autoListen) {
00010 erouter->addListener(this,EventBase::erouterEGID,getGeneratorID());
00011 if(erouter->hasListeners(getGeneratorID(),getSourceID())) {
00012 erouter->addListener(this,getListenGeneratorID(),getListenSourceID());
00013 isListening=true;
00014 }
00015 }
00016 }
00017
00018 void
00019 EventGeneratorBase::DoStop() {
00020 erouter->removeListener(this);
00021 isListening=false;
00022 BehaviorBase::DoStop();
00023 }
00024
00025 void
00026 EventGeneratorBase::processEvent(const EventBase& event) {
00027 if(!autoListen)
00028 return;
00029 if(event.getGeneratorID()==EventBase::erouterEGID) {
00030 if(erouter->hasListeners(getGeneratorID(),getSourceID())) {
00031 if(!isListening) {
00032 erouter->addListener(this,getListenGeneratorID(),getListenSourceID());
00033 isListening=true;
00034 }
00035 } else {
00036 if(isListening) {
00037 erouter->removeListener(this,getListenGeneratorID(),getListenSourceID());
00038 isListening=false;
00039 }
00040 }
00041 }
00042 }
00043
00044 void
00045 EventGeneratorBase::setAutoListen(EventBase::EventGeneratorID_t gid, unsigned int sid) {
00046 if(isListening) {
00047 erouter->removeListener(this,getListenGeneratorID(),getListenSourceID());
00048 isListening=false;
00049 }
00050 autoListen=true;
00051 srcGenID=gid;
00052 srcSourceID=sid;
00053 if(erouter->hasListeners(getGeneratorID(),getSourceID())) {
00054 if(!isListening) {
00055 erouter->addListener(this,getListenGeneratorID(),getListenSourceID());
00056 isListening=true;
00057 }
00058 }
00059 }
00060
00061 void
00062 EventGeneratorBase::unsetAutoListen() {
00063 if(isListening) {
00064 erouter->removeListener(this,getListenGeneratorID(),getListenSourceID());
00065 isListening=false;
00066 }
00067 autoListen=false;
00068 }
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
|