00001
00002
00003
00004
00005
00006
00007 #ifndef __WVFDSTREAM_H
00008 #define __WVFDSTREAM_H
00009
00010 #include "wvstream.h"
00011
00020 class WvFdStream : public WvStream
00021 {
00022 protected:
00024 int rfd;
00025
00027 int wfd;
00028
00030 bool shutdown_read, shutdown_write;
00031
00036 void setfd(int fd)
00037 { rfd = wfd = fd; }
00038
00039 public:
00044 WvFdStream(int rwfd = -1);
00045
00054 WvFdStream(int rfd, int wfd);
00055
00057 virtual ~WvFdStream();
00058
00063 int getrfd() const
00064 { return rfd; }
00065
00070 int getwfd() const
00071 { return wfd; }
00072
00081 int getfd() const
00082 {
00083 assert(rfd == wfd);
00084 return rfd;
00085 }
00086
00088 void set_nonblock(bool nonblock);
00089
00091 void set_close_on_exec(bool close_on_exec);
00092
00093
00094
00103 virtual void close();
00104 virtual bool isok() const;
00105 virtual size_t uread(void *buf, size_t count);
00106 virtual size_t uwrite(const void *buf, size_t count);
00107 virtual void pre_select(SelectInfo &si);
00108 virtual bool post_select(SelectInfo &si);
00109 virtual void maybe_autoclose();
00110
00111 public:
00112 const char *wstype() const { return "WvFdStream"; }
00113 };
00114
00115 typedef WvFdStream WvFDStream;
00116
00117 #endif // __WVFDSTREAM_H