Homepage Demos Overview Downloads Tutorials Reference
Credits

EventGeneratorBase.cc

Go 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 /*! @file
00072  * @brief 
00073  * @author ejt (Creator)
00074  *
00075  * $Author: ejt $
00076  * $Name: tekkotsu-2_2_1 $
00077  * $Revision: 1.3 $
00078  * $State: Exp $
00079  * $Date: 2004/11/09 20:01:49 $
00080  */
00081 

Tekkotsu v2.2.1
Generated Tue Nov 23 16:36:38 2004 by Doxygen 1.3.9.1