- java.lang.Object
-
- java.io.InputStream
-
- org.xnio.streams.BufferedChannelInputStream
-
- All Implemented Interfaces:
java.io.Closeable,java.lang.AutoCloseable
public class BufferedChannelInputStream extends java.io.InputStreamAn input stream which reads from a stream source channel with a buffer. In addition, theavailable()method can be used to determine whether the next read will or will not block.- Since:
- 2.1
-
-
Constructor Summary
Constructors Constructor Description BufferedChannelInputStream(StreamSourceChannel channel, int bufferSize)Construct a new instance.BufferedChannelInputStream(StreamSourceChannel channel, int bufferSize, long timeout, java.util.concurrent.TimeUnit unit)Construct a new instance.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description intavailable()Return the number of bytes available to read, or 0 if a subsequentread()operation would block.voidclose()Close the stream.longgetReadTimeout(java.util.concurrent.TimeUnit unit)Get the read timeout.intread()Read a byte, blocking if necessary.intread(byte[] b, int off, int len)Read bytes into an array.voidsetReadTimeout(long timeout, java.util.concurrent.TimeUnit unit)Set the read timeout.longskip(long n)Skip bytes in the stream.
-
-
-
Constructor Detail
-
BufferedChannelInputStream
public BufferedChannelInputStream(StreamSourceChannel channel, int bufferSize)
Construct a new instance.- Parameters:
channel- the channel to wrapbufferSize- the size of the internal buffer
-
BufferedChannelInputStream
public BufferedChannelInputStream(StreamSourceChannel channel, int bufferSize, long timeout, java.util.concurrent.TimeUnit unit)
Construct a new instance.- Parameters:
channel- the channel to wrapbufferSize- the size of the internal buffertimeout- the initial read timeout, or O for noneunit- the time unit for the read timeout
-
-
Method Detail
-
getReadTimeout
public long getReadTimeout(java.util.concurrent.TimeUnit unit)
Get the read timeout.- Parameters:
unit- the time unit- Returns:
- the timeout in the given unit
-
setReadTimeout
public void setReadTimeout(long timeout, java.util.concurrent.TimeUnit unit)Set the read timeout. Does not affect read operations in progress.- Parameters:
timeout- the read timeout, or 0 for noneunit- the time unit
-
read
public int read() throws java.io.IOExceptionRead a byte, blocking if necessary.- Specified by:
readin classjava.io.InputStream- Returns:
- the byte read, or -1 if the end of the stream has been reached
- Throws:
java.io.IOException- if an I/O error occurs
-
read
public int read(byte[] b, int off, int len) throws java.io.IOExceptionRead bytes into an array.- Overrides:
readin classjava.io.InputStream- Parameters:
b- the destination arrayoff- the offset into the array at which bytes should be filledlen- the number of bytes to fill- Returns:
- the number of bytes read, or -1 if the end of the stream has been reached
- Throws:
java.io.IOException- if an I/O error occurs
-
skip
public long skip(long n) throws java.io.IOExceptionSkip bytes in the stream.- Overrides:
skipin classjava.io.InputStream- Parameters:
n- the number of bytes to skip- Returns:
- the number of bytes skipped (0 if the end of stream has been reached)
- Throws:
java.io.IOException- if an I/O error occurs
-
available
public int available() throws java.io.IOExceptionReturn the number of bytes available to read, or 0 if a subsequentread()operation would block. If a 0 is returned, the channel'sresumeReads()method may be used to register for read-readiness.- Overrides:
availablein classjava.io.InputStream- Returns:
- the number of ready bytes, or 0 for none
- Throws:
java.io.IOException- if an I/O error occurs
-
close
public void close() throws java.io.IOExceptionClose the stream. Shuts down the channel's read side.- Specified by:
closein interfacejava.lang.AutoCloseable- Specified by:
closein interfacejava.io.Closeable- Overrides:
closein classjava.io.InputStream- Throws:
java.io.IOException- if an I/O error occurs
-
-