- 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.InputStream
An 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 int
available()
Return the number of bytes available to read, or 0 if a subsequentread()
operation would block.void
close()
Close the stream.long
getReadTimeout(java.util.concurrent.TimeUnit unit)
Get the read timeout.int
read()
Read a byte, blocking if necessary.int
read(byte[] b, int off, int len)
Read bytes into an array.void
setReadTimeout(long timeout, java.util.concurrent.TimeUnit unit)
Set the read timeout.long
skip(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.IOException
Read a byte, blocking if necessary.- Specified by:
read
in 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.IOException
Read bytes into an array.- Overrides:
read
in 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.IOException
Skip bytes in the stream.- Overrides:
skip
in 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.IOException
Return 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:
available
in 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.IOException
Close the stream. Shuts down the channel's read side.- Specified by:
close
in interfacejava.lang.AutoCloseable
- Specified by:
close
in interfacejava.io.Closeable
- Overrides:
close
in classjava.io.InputStream
- Throws:
java.io.IOException
- if an I/O error occurs
-
-