source: box/trunk/lib/common/BufferedStream.h @ 2728

Revision 2728, 1.0 KB checked in by chris, 21 months ago (diff)

Implement write buffering on directories.

  • Property svn:eol-style set to native
Line 
1// --------------------------------------------------------------------------
2//
3// File
4//              Name:    BufferedStream.h
5//              Purpose: Buffering read-only wrapper around IOStreams
6//              Created: 2007/01/16
7//
8// --------------------------------------------------------------------------
9
10#ifndef BUFFEREDSTREAM__H
11#define BUFFEREDSTREAM__H
12
13#include "IOStream.h"
14
15class BufferedStream : public IOStream
16{
17private:
18        IOStream& mrSource;
19        char mBuffer[4096];
20        int  mBufferSize;
21        int  mBufferPosition;
22
23public:
24        BufferedStream(IOStream& rSource);
25       
26        virtual int Read(void *pBuffer, int NBytes, int Timeout = IOStream::TimeOutInfinite);
27        virtual pos_type BytesLeftToRead();
28        virtual void Write(const void *pBuffer, int NBytes);
29        virtual pos_type GetPosition() const;
30        virtual void Seek(IOStream::pos_type Offset, int SeekType);
31        virtual void Close();
32       
33        virtual bool StreamDataLeft();
34        virtual bool StreamClosed();
35
36private:
37        BufferedStream(const BufferedStream &rToCopy) 
38        : mrSource(rToCopy.mrSource) { /* do not call */ }
39};
40
41#endif // BUFFEREDSTREAM__H
42
43
Note: See TracBrowser for help on using the repository browser.