- java.lang.Object
-
- java.io.InputStream
-
- org.xnio.streams.BufferPipeInputStream
-
- All Implemented Interfaces:
java.io.Closeable
,java.lang.AutoCloseable
public class BufferPipeInputStream extends java.io.InputStream
AnInputStream
implementation which is populated asynchronously withByteBuffer
instances.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interface
BufferPipeInputStream.InputHandler
A handler for events relating to the consumption of data from aBufferPipeInputStream
instance.
-
Constructor Summary
Constructors Constructor Description BufferPipeInputStream(BufferPipeInputStream.InputHandler inputHandler)
Construct a new instance.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description int
available()
void
close()
void
push(java.nio.ByteBuffer buffer)
Push a buffer into the queue.void
push(Pooled<java.nio.ByteBuffer> pooledBuffer)
Push a buffer into the queue.void
pushEof()
Push the EOF condition into the queue.void
pushException(java.io.IOException e)
Push an exception condition into the queue.int
read()
int
read(byte[] b, int off, int len)
long
skip(long qty)
-
-
-
Constructor Detail
-
BufferPipeInputStream
public BufferPipeInputStream(BufferPipeInputStream.InputHandler inputHandler)
Construct a new instance. The giveninputHandler
will be invoked after each buffer is fully read and when the stream is closed.- Parameters:
inputHandler
- the input events handler
-
-
Method Detail
-
push
public void push(java.nio.ByteBuffer buffer)
Push a buffer into the queue. There is no mechanism to limit the number of pushed buffers; if such a mechanism is desired, it must be implemented externally, for example maybe using aSemaphore
.- Parameters:
buffer
- the buffer from which more data should be read
-
push
public void push(Pooled<java.nio.ByteBuffer> pooledBuffer)
Push a buffer into the queue. There is no mechanism to limit the number of pushed buffers; if such a mechanism is desired, it must be implemented externally, for example maybe using aSemaphore
.- Parameters:
pooledBuffer
- the buffer from which more data should be read
-
pushException
public void pushException(java.io.IOException e)
Push an exception condition into the queue. After this method is called, no further buffers may be pushed into this instance.- Parameters:
e
- the exception to push
-
pushEof
public void pushEof()
Push the EOF condition into the queue. After this method is called, no further buffers may be pushed into this instance.
-
read
public int read() throws java.io.IOException
- Specified by:
read
in classjava.io.InputStream
- Throws:
java.io.IOException
-
read
public int read(byte[] b, int off, int len) throws java.io.IOException
- Overrides:
read
in classjava.io.InputStream
- Throws:
java.io.IOException
-
available
public int available() throws java.io.IOException
- Overrides:
available
in classjava.io.InputStream
- Throws:
java.io.IOException
-
skip
public long skip(long qty) throws java.io.IOException
- Overrides:
skip
in classjava.io.InputStream
- Throws:
java.io.IOException
-
close
public void close() throws java.io.IOException
- Specified by:
close
in interfacejava.lang.AutoCloseable
- Specified by:
close
in interfacejava.io.Closeable
- Overrides:
close
in classjava.io.InputStream
- Throws:
java.io.IOException
-
-