WvStreams
|
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