00001 #line 300 "./lpsrc/flx_demux.pak"
00002 #ifndef __DEMUXER__
00003 #define __DEMUXER__
00004 #include <flx_demux_config.hpp>
00005
00006 namespace flx { namespace demux {
00007
00008 typedef struct {
00009 char* buffer;
00010 long buffer_size;
00011 long bytes_written;
00012
00013 bool finished() { return bytes_written == buffer_size; }
00014 }sel_param;
00015
00016
00017
00018 enum { PDEMUX_READ = 1, PDEMUX_WRITE = 2 };
00019
00020
00021
00022 class DEMUX_EXTERN demux_quit_flag
00023 {
00024 public:
00025 virtual void signal_true() = 0;
00026 virtual ~demux_quit_flag() {}
00027 };
00028
00029
00030
00031
00032 class DEMUX_EXTERN demuxer {
00033 protected:
00034
00035
00036
00037
00038 virtual void get_evts(bool poll) = 0;
00039
00040
00041
00042 demux_quit_flag* quit_flag;
00043 public:
00044 demuxer() : quit_flag(0) {}
00045 virtual ~demuxer() {}
00046
00047 void wait() { get_evts(false); }
00048 void poll() { get_evts(true); }
00049
00050
00051
00052
00053 virtual demux_quit_flag* get_quit_flag() { return quit_flag; }
00054 virtual void set_quit_flag(demux_quit_flag* f) { quit_flag = f; }
00055 };
00056
00057
00058
00059
00060
00061 class DEMUX_EXTERN demux_callback {
00062 public:
00063 virtual void callback(demuxer* d) = 0;
00064 virtual ~demux_callback() {}
00065 };
00066
00067 }}
00068 #endif
00069