demux_quitter.hpp

00001 #line 251 "./lpsrc/flx_demux.pak"
00002 
00003 #ifndef __FLX_DEMUX_QUITTER_H__
00004 #define __FLX_DEMUX_QUITTER_H__
00005 
00006 #include <flx_demux_config.hpp>
00007 #include "demux_demuxer.hpp"  // demuxers
00008 
00009 #if FLX_WIN32
00010 #include "demux_wself_piper.hpp" // win32 self piper
00011 #else
00012 #include "demux_self_piper.hpp" // posix self piper
00013 #endif
00014 
00015 #include "pthread_waitable_bool.hpp"
00016 
00017 namespace flx { namespace demux {
00018 
00019 // quits a demuxer
00020 class DEMUX_EXTERN demux_quitter
00021         : public demux_callback, public demux_quit_flag {
00022   // self pipes for getting demuxer attention
00023 #if FLX_WIN32
00024   wself_piper sp;
00025 #else
00026   self_piper sp;
00027 #endif
00028   pthread::waitable_bool finished;  // initially false
00029   void callback(demuxer* demux); // called back by demuxer in event thread.
00030   virtual void signal_true(); // signal finish, from demux_quit_flag
00031 public:
00032   void quit(demuxer* demux); // blocks until event thread exits
00033 };
00034 
00035 } }
00036 
00037 #endif
00038 

Generated on Thu May 29 14:36:12 2008 for Felix by  doxygen 1.5.5