WvStreams
wvstreamclone.h
00001 /* -*- Mode: C++ -*-
00002  * Worldvisions Weaver Software:
00003  *   Copyright (C) 1997-2002 Net Integration Technologies, Inc.
00004  * 
00005  * Provides support for constructing streams that wrap other streams.
00006  * This can turn a (relatively useless) IWvStream into a useful WvStream.
00007  */ 
00008 #ifndef __WVSTREAMCLONE_H
00009 #define __WVSTREAMCLONE_H
00010 
00011 #include "wvstream.h"
00012 
00023 class WvStreamClone : public WvStream
00024 {
00025 public:
00030     WvStreamClone(IWvStream *_cloned = NULL);
00031     
00042     virtual ~WvStreamClone();
00043 
00044     IWvStream *cloned;
00045     
00062     virtual void setclone(IWvStream *clone);
00063     
00069     virtual void close();
00070     
00076     virtual bool flush_internal(time_t msec_timeout);
00077     virtual size_t uread(void *buf, size_t size);
00078     virtual size_t uwrite(const void *buf, size_t size);
00079     virtual bool isok() const;
00080     virtual int geterr() const;
00081     virtual WvString errstr() const;
00082     virtual void pre_select(SelectInfo &si);
00083     virtual bool post_select(SelectInfo &si);
00084     virtual const WvAddr *src() const;
00085     virtual void execute();
00086     virtual void noread();
00087     virtual void nowrite();
00088     virtual WvString getattr(WvStringParm name) const;
00089 
00090 private:
00091     void close_callback();
00092 
00093 protected:
00094     WvString my_type;
00095 public:
00096     const char *wstype() const { return my_type; }
00097 };
00098 
00099 #endif // __WVSTREAMCLONE_H