From d44ece9babc5d70e1194a29a54b72dae1fe70ceb Mon Sep 17 00:00:00 2001 From: Mike Buland Date: Thu, 22 Sep 2016 09:48:01 -0600 Subject: Included the experimental TeeStream. This allows you to write data to multiple streams simultaneously and easily. It's pretty much complete, but it feels like it could use more...features somehow. --- src/unstable/teestream.h | 65 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 src/unstable/teestream.h (limited to 'src/unstable/teestream.h') diff --git a/src/unstable/teestream.h b/src/unstable/teestream.h new file mode 100644 index 0000000..f7287f1 --- /dev/null +++ b/src/unstable/teestream.h @@ -0,0 +1,65 @@ +/* + * Copyright (C) 2007-2014 Xagasoft, All rights reserved. + * + * This file is part of the libbu++ library and is released under the + * terms of the license contained in the file LICENSE. + */ + +#ifndef BU_TEE_STREAM_H +#define BU_TEE_STREAM_H + +#include "bu/filter.h" + +namespace Bu +{ + class TeeStream : public Bu::Stream + { + public: + TeeStream(); + virtual ~TeeStream(); + + void addStream( Bu::Stream &rStream ); + + virtual void close(); + virtual Bu::size tell(); + virtual void seek( Bu::size offset ); + virtual void setPos( Bu::size pos ); + virtual void setPosEnd( Bu::size pos ); + virtual bool isEos(); + virtual bool isOpen(); + + virtual void flush(); + + virtual bool canRead(); + virtual bool canWrite(); + + virtual bool isReadable(); + virtual bool isWritable(); + virtual bool isSeekable(); + + virtual bool isBlocking(); + virtual void setBlocking( bool bBlocking=true ); + + /** + * Most filters won't re-implement this, it doesn't make a lot of sense + * for filters, in general. + */ + virtual void setSize( Bu::size iSize ); + + virtual size getSize() const; + virtual size getBlockSize() const; + virtual Bu::String getLocation() const; + + private: + class StreamWrapper + { + public: + StreamWrapper( Bu::Stream &r ) : rStream( r ) { } + Bu::Stream &rStream; + }; + typedef Bu::List StreamRefList; + StreamRefList lStream; + }; +} + +#endif -- cgit v1.2.3