Top Description Fields Constructors Methods
org.xnio.streams

public Class ChannelInputStream

extends InputStream
Class Inheritance
Static Imports
org.xnio._private.Messages.msg

An input stream which reads from a stream source channel. All read operations are directly performed upon the channel, so for optimal performance, a buffering input stream should be used to wrap this class.
Since
1.2

Field Summary

Modifier and TypeField and Description
protected final StreamSourceChannel
private static final int
private static final int
private volatile int
private static final AtomicIntegerFieldUpdater<ChannelInputStream>
private volatile long

Constructor Summary

AccessConstructor and Description
public
ChannelInputStream(final StreamSourceChannel
the channel to wrap
channel
)

Construct a new instance.

public
ChannelInputStream(final StreamSourceChannel
the channel to wrap
channel
,
final long
the read timeout, or O for none
timeout
,
final TimeUnit
the time unit for read timeouts
timeoutUnit
)

Construct a new instance.

Method Summary

Modifier and TypeMethod and Description
public void
close()

Overrides java.io.InputStream.close.

Implements java.io.Closeable.close.

Closes this input stream and releases any system resources associated with the stream.

private boolean
private void
exit(boolean setEof)

public long

Returns:

the timeout in the given unit
getReadTimeout
(TimeUnit
the time unit
unit
)

Get the read timeout.

public int
read()

Implements abstract java.io.InputStream.read.

Reads the next byte of data from the input stream.

public int
read(final byte[]
the buffer into which the data is read.
b
)

Overrides java.io.InputStream.read.

Reads some number of bytes from the input stream and stores them into the buffer array b.

public int
read(final byte[]
the buffer into which the data is read.
b
,
final int
the start offset in array b at which the data is written.
off
,
final int
the maximum number of bytes to read.
len
)

Overrides java.io.InputStream.read.

Reads up to len bytes of data from the input stream into an array of bytes.

public void
setReadTimeout(long
the read timeout, or 0 for none
timeout
,
TimeUnit
the time unit
unit
)

Set the read timeout.

public long

Returns:

the number of bytes skipped (0 if the end of stream has been reached)
skip
(long
the number of bytes to skip
n
)

Overrides java.io.InputStream.skip.

Skip bytes in the stream.

Inherited from java.io.InputStream:
availablemarkmarkSupportednullInputStreamreadAllBytesreadNBytesreadNBytesresetskipNBytestransferTo

Field Detail

channelback to summary
protected final StreamSourceChannel channel
FLAG_ENTEREDback to summary
private static final int FLAG_ENTERED
FLAG_EOFback to summary
private static final int FLAG_EOF
flagsback to summary
private volatile int flags
Annotations
@SuppressWarnings:unused
flagsUpdaterback to summary
private static final AtomicIntegerFieldUpdater<ChannelInputStream> flagsUpdater
timeoutback to summary
private volatile long timeout

Constructor Detail

ChannelInputStreamback to summary
public ChannelInputStream(final StreamSourceChannel channel)

Construct a new instance. The stream will have no read timeout.

Parameters
channel:StreamSourceChannel

the channel to wrap

ChannelInputStreamback to summary
public ChannelInputStream(final StreamSourceChannel channel, final long timeout, final TimeUnit timeoutUnit)

Construct a new instance.

Parameters
channel:StreamSourceChannel

the channel to wrap

timeout:long

the read timeout, or O for none

timeoutUnit:TimeUnit

the time unit for read timeouts

Method Detail

closeback to summary
public void close() throws IOException

Overrides java.io.InputStream.close.

Implements java.io.Closeable.close.

Doc from java.io.InputStream.close.

Closes this input stream and releases any system resources associated with the stream.

Exceptions
IOException:
if an I/O error occurs.
enterback to summary
private boolean enter()
exitback to summary
private void exit(boolean setEof)
getReadTimeoutback to summary
public long getReadTimeout(TimeUnit unit)

Get the read timeout.

Parameters
unit:TimeUnit

the time unit

Returns:long

the timeout in the given unit

readback to summary
public int read() throws IOException

Implements abstract java.io.InputStream.read.

Doc from java.io.InputStream.read.

Reads the next byte of data from the input stream. The value byte is returned as an int in the range 0 to 255. If no byte is available because the end of the stream has been reached, the value -1 is returned. This method blocks until input data is available, the end of the stream is detected, or an exception is thrown.

Returns:int

the next byte of data, or -1 if the end of the stream is reached.

Exceptions
IOException:
if an I/O error occurs.
readback to summary
public int read(final byte[] b) throws IOException

Overrides java.io.InputStream.read.

Doc from java.io.InputStream.read.

Reads some number of bytes from the input stream and stores them into the buffer array b. The number of bytes actually read is returned as an integer. This method blocks until input data is available, end of file is detected, or an exception is thrown.

If the length of b is zero, then no bytes are read and 0 is returned; otherwise, there is an attempt to read at least one byte. If no byte is available because the stream is at the end of the file, the value -1 is returned; otherwise, at least one byte is read and stored into b.

The first byte read is stored into element b[0], the next one into b[1], and so on. The number of bytes read is, at most, equal to the length of b. Let k be the number of bytes actually read; these bytes will be stored in elements b[0] through b[k-1], leaving elements b[k] through b[b.length-1] unaffected.

Parameters
b:byte[]

the buffer into which the data is read.

Returns:int

the total number of bytes read into the buffer, or -1 if there is no more data because the end of the stream has been reached.

Exceptions
IOException:
If the first byte cannot be read for any reason other than the end of the file, if the input stream has been closed, or if some other I/O error occurs.
readback to summary
public int read(final byte[] b, final int off, final int len) throws IOException

Overrides java.io.InputStream.read.

Doc from java.io.InputStream.read.

Reads up to len bytes of data from the input stream into an array of bytes. An attempt is made to read as many as len bytes, but a smaller number may be read. The number of bytes actually read is returned as an integer.

This method blocks until input data is available, end of file is detected, or an exception is thrown.

If len is zero, then no bytes are read and 0 is returned; otherwise, there is an attempt to read at least one byte. If no byte is available because the stream is at end of file, the value -1 is returned; otherwise, at least one byte is read and stored into b.

The first byte read is stored into element b[off], the next one into b[off+1], and so on. The number of bytes read is, at most, equal to len. Let k be the number of bytes actually read; these bytes will be stored in elements b[off] through b[off+k-1], leaving elements b[off+k] through b[off+len-1] unaffected.

In every case, elements b[0] through b[off-1] and elements b[off+len] through b[b.length-1] are unaffected.

Parameters
b:byte[]

the buffer into which the data is read.

off:int

the start offset in array b at which the data is written.

len:int

the maximum number of bytes to read.

Returns:int

the total number of bytes read into the buffer, or -1 if there is no more data because the end of the stream has been reached.

Exceptions
IOException:
If the first byte cannot be read for any reason other than end of file, or if the input stream has been closed, or if some other I/O error occurs.
setReadTimeoutback to summary
public void setReadTimeout(long timeout, TimeUnit unit)

Set the read timeout. Does not affect read operations in progress.

Parameters
timeout:long

the read timeout, or 0 for none

unit:TimeUnit

the time unit

skipback to summary
public long skip(long n) throws IOException

Overrides java.io.InputStream.skip.

Skip bytes in the stream.

Parameters
n:long

the number of bytes to skip

Returns:long

the number of bytes skipped (0 if the end of stream has been reached)

Exceptions
IOException:
if an I/O error occurs