demux_ts_poll_demuxer.hpp

00001 #line 4558 "./lpsrc/flx_demux.pak"
00002 #ifndef __TS_POLL_DEMUXER__
00003 #define __TS_POLL_DEMUXER__
00004 
00005 // thread safe version of poll_demuxer
00006 
00007 #include "demux_poll_demuxer.hpp"
00008 #include "demux_self_piper.hpp"     // self pipe trick
00009 #include "pthread_mutex.hpp"
00010 
00011 namespace flx { namespace demux {
00012 
00013 class ts_poll_demuxer : public posix_demuxer {
00014   // lock
00015   flx::pthread::flx_mutex_t    ham_fist;
00016   // protects this little fella here.
00017   poll_demuxer    demux;
00018 
00019   self_piper      sp;
00020 protected:
00021   virtual void    get_evts(bool poll);
00022 public:
00023   ts_poll_demuxer();
00024   ~ts_poll_demuxer();
00025 
00026   virtual int     add_socket_wakeup(socket_wakeup* sv, int flags);
00027 
00028   // oops! need to correctly get/set the quit flag
00029   virtual demux_quit_flag* get_quit_flag() { return demux.get_quit_flag(); }
00030   virtual void set_quit_flag(demux_quit_flag* f) { demux.set_quit_flag(f); }
00031 };
00032 
00033 }} // namespace demux, flx
00034 
00035 #endif
00036 

Generated on Mon Dec 11 17:08:15 2006 for Felix by  doxygen 1.5.1