WvStreams
wvstreamclone.h
1 /* -*- Mode: C++ -*-
2  * Worldvisions Weaver Software:
3  * Copyright (C) 1997-2002 Net Integration Technologies, Inc.
4  *
5  * Provides support for constructing streams that wrap other streams.
6  * This can turn a (relatively useless) IWvStream into a useful WvStream.
7  */
8 #ifndef __WVSTREAMCLONE_H
9 #define __WVSTREAMCLONE_H
10 
11 #include "wvstream.h"
12 
23 class WvStreamClone : public WvStream
24 {
25 public:
30  WvStreamClone(IWvStream *_cloned = NULL);
31 
42  virtual ~WvStreamClone();
43 
44  IWvStream *cloned;
45 
62  virtual void setclone(IWvStream *clone);
63 
69  virtual void close();
70 
76  virtual bool flush_internal(time_t msec_timeout);
77  virtual size_t uread(void *buf, size_t size);
78  virtual size_t uwrite(const void *buf, size_t size);
79  virtual bool isok() const;
80  virtual int geterr() const;
81  virtual WvString errstr() const;
82  virtual void pre_select(SelectInfo &si);
83  virtual bool post_select(SelectInfo &si);
84  virtual const WvAddr *src() const;
85  virtual void execute();
86  virtual void noread();
87  virtual void nowrite();
88  virtual WvString getattr(WvStringParm name) const;
89 
90 private:
91  void close_callback();
92 
93 protected:
94  WvString my_type;
95 public:
96  const char *wstype() const { return my_type; }
97 };
98 
99 #endif // __WVSTREAMCLONE_H