|
OpenTop 1.3 | |||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | Cross-Platform C++ | ||||
SUMMARY: CONSTRUCTOR | METHOD | DETAIL: CONSTRUCTOR | METHOD |
#include "ot/io/BufferedInputStream.h"
As bytes from the stream are read, the internal buffer is refilled as necessary from the contained input stream. In this way i/o efficiency can be improved by translating multiple small read operations into one large one.
To improve efficiency and avoid the needless copying of data, if the application performs a read request that is larger than the internal buffer, the internal buffer is empty and there is not a mark() operation outstanding, the internal buffer is bypassed and bytes are read directly into the application's buffer.
mark() and reset() are supported by buffering all data after a mark() operation until the readLimit has been exceeded. If mark() is called with a readLimit that is larger than the internal buffer, the buffer is re-allocated to the size requested.
Constructor/Destructor Summary | |
BufferedInputStream(InputStream* pInputStream) Constructs a BufferedInputStream with a default buffer size and pInputStream as the contained InputStream. | |
BufferedInputStream(InputStream* pInputStream, size_t bufSize) Constructs a BufferedInputStream using pInputStream as the contained input stream and a buffer size of bufSize. | |
~BufferedInputStream() Destroys the internal buffer. |
Method Summary | |
virtual size_t |
available() Returns the number of bytes that can be read without blocking. |
virtual void |
close() Closes the contained input stream and releases any system resources associated with it. |
virtual void |
mark(size_t readLimit) Marks the current position in the byte stream. |
virtual bool |
markSupported() const Tests whether the BufferedInputStream supports the mark() operation, which it does. |
virtual long |
read(Byte* pBuffer, size_t bufLen) Reads up to bufLen bytes into the supplied buffer. |
virtual void |
reset() Resets the position in the byte stream to a previously marked position. |
Methods inherited from class ot::io::InputStream |
read, skip |
Methods inherited from class ot::ManagedObject |
addRef, getRefCount, onFinalRelease, operator=, release |
Constructor/Destructor Detail |
BufferedInputStream(InputStream* pInputStream)
NullPointerException
- BufferedInputStream(InputStream* pInputStream, size_t bufSize)
NullPointerException
- virtual ~BufferedInputStream()
Method Detail |
virtual size_t available()
Note, however, that the utility of this function is severely limited. Some sub-classes (e.g. FileInputStream) always return zero from available() and zero is also returned when the stream is at the end. For these reasons, it is rarely appropriate for an application to loop waiting for a positive return value from available().
IOException
- virtual void close()
virtual void mark(size_t readLimit)
When the readLimit is exceeded, the marked position is automatically invalidated, with the result that subsequent reset() operations will fail with an IOException.
Only one mark position is maintained by the InputStream. Further calls to mark() will establish a new mark position; reset() can only reset the position to the most recently established mark position.
If the current buffer has less than readLimit bytes available then the buffer is re-organized or reallocated so that is can hold at least readLimit bytes forward from the current position.
readLimit
- IOException
- virtual bool markSupported() const
virtual long read(Byte* pBuffer, size_t bufLen)
pBuffer
- bufLen
- IllegalArgumentException
- NullPointerException
- IOException
- virtual void reset()
IOException
- IOException
-
|
OpenTop 1.3 | |||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | Cross-Platform C++ | ||||
SUMMARY: CONSTRUCTOR | METHOD | DETAIL: CONSTRUCTOR | METHOD |