Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members

publisher.h

00001 //-*- C++ -*-
00002 //
00003 #ifndef __LISTENER__publisher_h__
00004 #define __LISTENER__publisher_h__
00005 
00006 #include "common.h"
00007 #include "event_filter.h"
00008 #include <vector>
00009 #include <list>
00010 
00024 #define igs_emit(E) post_event(new E)
00025 
00026 namespace listener { 
00027   
00028   class Event ;
00029   class Listener ;
00030   class Subscriber ;
00031 
00040   class IGSLISTENER Publisher {
00041   public:
00042     Publisher() ;
00043     virtual ~Publisher() ;
00044     
00064     int post_event(Event* e) ;
00065     int post_event(Event* e) const ;
00066 
00067     void block_all_events() ;
00068     void unblock_all_events() ;
00069     bool are_all_events_blocked() const ;
00070 
00071     void dump_publisher(std::ostream&) ;
00072     
00073   private:
00074     friend class Subscriber ;
00075     friend class Listener ;
00076     typedef std::list<Listener*> Listeners ;
00077     void add_listener_private(Listener* l) ;
00078     void notify_remove_listener(Listener* l) ;
00079     Listeners listeners_ ;
00080     bool blocked_ ;
00081     
00082   } ;
00083 
00084   inline bool Publisher::are_all_events_blocked() const {
00085     return blocked_ ;
00086   }
00087 
00088 }
00089 
00090 #endif

Generated on Mon Jan 30 11:57:50 2006 for EventListener by  doxygen 1.3.9.1