summaryrefslogtreecommitdiff
path: root/src/unstable/teestream.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/unstable/teestream.h')
-rw-r--r--src/unstable/teestream.h65
1 files changed, 65 insertions, 0 deletions
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 @@
1/*
2 * Copyright (C) 2007-2014 Xagasoft, All rights reserved.
3 *
4 * This file is part of the libbu++ library and is released under the
5 * terms of the license contained in the file LICENSE.
6 */
7
8#ifndef BU_TEE_STREAM_H
9#define BU_TEE_STREAM_H
10
11#include "bu/filter.h"
12
13namespace Bu
14{
15 class TeeStream : public Bu::Stream
16 {
17 public:
18 TeeStream();
19 virtual ~TeeStream();
20
21 void addStream( Bu::Stream &rStream );
22
23 virtual void close();
24 virtual Bu::size tell();
25 virtual void seek( Bu::size offset );
26 virtual void setPos( Bu::size pos );
27 virtual void setPosEnd( Bu::size pos );
28 virtual bool isEos();
29 virtual bool isOpen();
30
31 virtual void flush();
32
33 virtual bool canRead();
34 virtual bool canWrite();
35
36 virtual bool isReadable();
37 virtual bool isWritable();
38 virtual bool isSeekable();
39
40 virtual bool isBlocking();
41 virtual void setBlocking( bool bBlocking=true );
42
43 /**
44 * Most filters won't re-implement this, it doesn't make a lot of sense
45 * for filters, in general.
46 */
47 virtual void setSize( Bu::size iSize );
48
49 virtual size getSize() const;
50 virtual size getBlockSize() const;
51 virtual Bu::String getLocation() const;
52
53 private:
54 class StreamWrapper
55 {
56 public:
57 StreamWrapper( Bu::Stream &r ) : rStream( r ) { }
58 Bu::Stream &rStream;
59 };
60 typedef Bu::List<StreamWrapper> StreamRefList;
61 StreamRefList lStream;
62 };
63}
64
65#endif