00001 #line 870 "./lpsrc/flx_faio.pak"
00002 #ifndef __FAIO_POSIXIO__
00003 #define __FAIO_POSIXIO__
00004 #include <flx_faio_config.hpp>
00005
00006 #include "faio_asyncio.hpp"
00007 #include "faio_drv.hpp"
00008
00009
00010
00011
00012
00013 #include "demux_posix_demuxer.hpp"
00014
00015
00016
00017 #include "demux_pfileio.hpp"
00018
00019 #include "demux_timer_queue.hpp"
00020
00021 namespace flx { namespace faio {
00022
00023 class FAIO_EXTERN socketio_wakeup : public demux::socket_wakeup {
00024 public:
00025 demux::sel_param pb;
00026 thread_wakeup fw;
00027
00028 int sio_flags;
00029
00030 virtual void wakeup(demux::posix_demuxer& demux);
00031 };
00032
00033
00034
00035
00036
00037 class FAIO_EXTERN socketio_request : public flx_driver_request_base {
00038 public:
00039 socketio_wakeup sv;
00040
00041 socketio_request() {}
00042
00043 socketio_request(int s, char* buf, long len, bool r);
00044 virtual bool start_async_op(demux::demuxer& demux, flx_drv* drv, void* f);
00045 };
00046
00047 class FAIO_EXTERN connect_request
00048 : public flx_driver_request_base, public demux::connect_control_block {
00049 public:
00050 thread_wakeup fw;
00051
00052 connect_request() {}
00053
00054 connect_request(const char* addr, int port) { addy = addr; p = port; s=-1; }
00055 virtual bool start_async_op(demux::demuxer& demux, flx_drv* drv, void* f);
00056 virtual void wakeup(demux::posix_demuxer& demux);
00057 };
00058
00059 class FAIO_EXTERN accept_request
00060 : public flx_driver_request_base, public demux::accept_control_block {
00061 public:
00062
00063
00064
00065 thread_wakeup fw;
00066
00067 accept_request() {}
00068
00069
00070 accept_request(int listener) { s = listener; }
00071
00072
00073 virtual bool start_async_op(demux::demuxer& demux, flx_drv* drv, void* f);
00074
00075
00076 virtual void wakeup(demux::posix_demuxer& demux);
00077 };
00078
00079
00080
00081
00082 class FAIO_EXTERN flxfileio_request
00083 : public flx_driver_request_base, public demux::fileio_request
00084 {
00085 thread_wakeup fw;
00086 public:
00087 flxfileio_request();
00088 ~flxfileio_request();
00089
00090 flxfileio_request(int f, char* buf, long len, long off, bool rd)
00091 : fileio_request(f, buf, len, off, rd) {}
00092
00093
00094 virtual bool start_async_op(demux::demuxer& demux, flx_drv* drv, void* f);
00095
00096
00097 virtual void finished();
00098 };
00099
00100 }}
00101 #endif