00001
00002
00003
00004
00005
00006
00007
00008 #ifndef __WVSTREAMCLONE_H
00009 #define __WVSTREAMCLONE_H
00010
00011 #include "wvstream.h"
00012
00026 class WvStreamClone : public WvStream
00027 {
00028 public:
00039 WvStreamClone(IWvStream *_cloned = NULL);
00040 virtual ~WvStreamClone();
00041
00042 IWvStream *cloned;
00043 bool disassociate_on_close;
00044
00045 virtual void setclone(IWvStream *clone);
00046 virtual void close();
00047 virtual bool flush_internal(time_t msec_timeout);
00048 virtual size_t uread(void *buf, size_t size);
00049 virtual size_t uwrite(const void *buf, size_t size);
00050 virtual bool isok() const;
00051 virtual int geterr() const;
00052 virtual WvString errstr() const;
00053 virtual void pre_select(SelectInfo &si);
00054 virtual bool post_select(SelectInfo &si);
00055 virtual const WvAddr *src() const;
00056 virtual void execute();
00057 virtual void noread();
00058 virtual void nowrite();
00059
00060 private:
00061 void close_callback(WvStream &s);
00062
00063 protected:
00064 WvString my_type;
00065 public:
00066 const char *wstype() const { return my_type; }
00067 };
00068
00069 #endif // __WVSTREAMCLONE_H