/usr/include/wvstreams/wvstreamclone.h is in libwvstreams-dev 4.6.1-2build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 | /* -*- Mode: C++ -*-
* Worldvisions Weaver Software:
* Copyright (C) 1997-2002 Net Integration Technologies, Inc.
*
* Provides support for constructing streams that wrap other streams.
* This can turn a (relatively useless) IWvStream into a useful WvStream.
*/
#ifndef __WVSTREAMCLONE_H
#define __WVSTREAMCLONE_H
#include "wvstream.h"
/**
* WvStreamClone simply forwards all requests to the "cloned" stream.
*
* A class derived from WvStreamClone can contain a WvStream as a
* dynamically allocated data member, but act like the stream itself.
*
* This is useful for classes that need to create/destroy WvPipes
* while they run, for example, yet do not want users to know about
* the member variable.
*/
class WvStreamClone : public WvStream
{
public:
/**
* Constructs the stream, then calls setclone(_cloned). See setclone()
* for important information.
*/
WvStreamClone(IWvStream *_cloned = NULL);
/**
* The WvStreamClone destructor.
*
* Note that this calls setclone(NULL), which calls WVRELEASE(cloned).
*
* However, we do *not* explicitly cloned->close(). If the clone is
* ready to delete itself after the release, then it will close itself
* anyway; if not, WvStreamClone leaves it alone. Note that this
* behaviour was quite different before WvStreams 5.
*/
virtual ~WvStreamClone();
IWvStream *cloned;
/**
* WvStreamClone takes ownership of the given stream; it will WVRELEASE()
* the stream when you setclone() it to something else or destroy this
* object. If this is undesirable, you should addRef() the stream before
* passing it in here.
*
* Note: setclone() changes the cloned stream's various callbacks. It
* removes the callbacks from the old stream when you setclone() to
* something else. This means it is not safe to clone the same stream
* more than once at a time, but it is safe to un-clone and then re-clone
* a stream (as long as you watch its reference count).
*
* Note: calling setclone() more than once on the same stream can cause
* weird interactions with buffering. Be careful. It is often best to
* flush your output buffer before calling setclone().
*/
virtual void setclone(IWvStream *clone);
/**
* Close this stream. Note that this *does* close the inner stream.
* However, see ~WvStreamClone() for a note about destroying vs. closing
* the stream.
*/
virtual void close();
/**
* WvStream overrides. These generally just call the cloned stream's
* version.
*/
virtual bool flush_internal(time_t msec_timeout);
virtual size_t uread(void *buf, size_t size);
virtual size_t uwrite(const void *buf, size_t size);
virtual bool isok() const;
virtual int geterr() const;
virtual WvString errstr() const;
virtual void pre_select(SelectInfo &si);
virtual bool post_select(SelectInfo &si);
virtual const WvAddr *src() const;
virtual void execute();
virtual void noread();
virtual void nowrite();
virtual WvString getattr(WvStringParm name) const;
private:
void close_callback();
protected:
WvString my_type;
public:
const char *wstype() const { return my_type; }
};
#endif // __WVSTREAMCLONE_H
|