|
com.Ostermiller.util Java Utilities |
|||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectcom.Ostermiller.util.CircularByteBuffer
public class CircularByteBuffer
Implements the Circular Buffer producer/consumer model for bytes. More information about this class is available from ostermiller.org.
Using this class is a simpler alternative to using a PipedInputStream and a PipedOutputStream. PipedInputStreams and PipedOutputStreams don't support the mark operation, don't allow you to control buffer sizes that they use, and have a more complicated API that requires instantiating two classes and connecting them.
This class is thread safe.
CircularCharBuffer
,
CircularObjectBuffer
Field Summary | |
---|---|
static int |
INFINITE_SIZE
A buffer that will grow as things are added. |
Constructor Summary | |
---|---|
CircularByteBuffer()
Create a new buffer with a default capacity. |
|
CircularByteBuffer(boolean blockingWrite)
Create a new buffer with a default capacity and given blocking behavior. |
|
CircularByteBuffer(int size)
Create a new buffer with given capacity. |
|
CircularByteBuffer(int size,
boolean blockingWrite)
Create a new buffer with the given capacity and blocking behavior. |
Method Summary | |
---|---|
void |
clear()
Make this buffer ready for reuse. |
int |
getAvailable()
Get number of bytes that are available to be read. |
InputStream |
getInputStream()
Retrieve a InputStream that can be used to empty this buffer. |
OutputStream |
getOutputStream()
Retrieve a OutputStream that can be used to fill this buffer. |
int |
getSize()
Get the capacity of this buffer. |
int |
getSpaceLeft()
Get the number of bytes this buffer has free for writing. |
Methods inherited from class java.lang.Object |
---|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static final int INFINITE_SIZE
Constructor Detail |
---|
public CircularByteBuffer()
public CircularByteBuffer(int size)
Note that the buffer may reserve some bytes for special purposes and capacity number of bytes may not be able to be written to the buffer.
Note that if the buffer is of INFINITE_SIZE it will neither block or throw exceptions, but rather grow without bound.
size
- desired capacity of the buffer in bytes or CircularByteBuffer.INFINITE_SIZE.public CircularByteBuffer(boolean blockingWrite)
blockingWrite
- true writing to a full buffer should block
until space is available, false if an exception should
be thrown instead.public CircularByteBuffer(int size, boolean blockingWrite)
Note that the buffer may reserve some bytes for special purposes and capacity number of bytes may not be able to be written to the buffer.
Note that if the buffer is of INFINITE_SIZE it will neither block or throw exceptions, but rather grow without bound.
size
- desired capacity of the buffer in bytes or CircularByteBuffer.INFINITE_SIZE.blockingWrite
- true writing to a full buffer should block
until space is available, false if an exception should
be thrown instead.Method Detail |
---|
public void clear()
public OutputStream getOutputStream()
Write methods may throw a BufferOverflowException if the buffer is not large enough. A large enough buffer size must be chosen so that this does not happen or the caller must be prepared to catch the exception and try again once part of the buffer has been consumed.
public InputStream getInputStream()
This InputStream supports marks at the expense of the buffer size.
public int getAvailable()
Note that the number of bytes available plus the number of bytes free may not add up to the capacity of this buffer, as the buffer may reserve some space for other purposes.
public int getSpaceLeft()
Note that the number of bytes available plus the number of bytes free may not add up to the capacity of this buffer, as the buffer may reserve some space for other purposes.
public int getSize()
Note that the number of bytes available plus the number of bytes free may not add up to the capacity of this buffer, as the buffer may reserve some space for other purposes.
|
com.Ostermiller.util Java Utilities |
|||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
Copyright © 2001-2012 by Stephen Ostermiller