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 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; // defaults to false 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 bool 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 00064 #endif // __WVSTREAMCLONE_H