demux_ts_select_demuxer.hpp

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

Generated on Mon Dec 11 18:08:29 2006 for Felix by  doxygen 1.5.1