Top Description Methods
org.xnio.channels

public Interface StreamSourceChannel

extends ReadableByteChannel, ScatteringByteChannel, SuspendableReadChannel
Known Direct Subinterfaces
org.xnio.channels.StreamChannel
Known Direct Implementers
org.xnio.channels.EmptyStreamSourceChannel, org.xnio.channels.FixedLengthStreamSourceChannel, org.xnio.conduits.ConduitStreamSourceChannel, org.xnio.channels.PushBackStreamChannel, org.xnio.channels.PushBackStreamChannel.BufferHolder, org.xnio.channels.SplitStreamSourceChannel
Imports
java.nio.ByteBuffer, java.nio.channels.ScatteringByteChannel, .ReadableByteChannel, .FileChannel, java.io.IOException, org.xnio.ChannelListener

A stream source channel. This type of channel is a readable source for bytes. While all channel types are thread-safe, reading a stream from more than one thread concurrently will cause data corruption and may be disallowed at the option of the implementation.

Method Summary

Modifier and TypeMethod and Description
public ChannelListener.Setter<? extends StreamSourceChannel>
getCloseSetter()

Redeclares org.xnio.channels.SuspendableReadChannel.getCloseSetter.

Get the setter which can be used to change the close listener for this channel.

public ChannelListener.Setter<? extends StreamSourceChannel>
getReadSetter()

Redeclares org.xnio.channels.SuspendableReadChannel.getReadSetter.

Get the setter which can be used to change the read listener for this channel.

public long

Returns:

the number of bytes (possibly 0) that were actually transferred
transferTo
(long
the position within the file from which the transfer is to begin
position
,
long
the number of bytes to be transferred
count
,
FileChannel
the file to write to
target
)

Transfers bytes into the given file from this channel.

public long

Returns:

the number of bytes (possibly 0) that were actually transferred, or -1 if the end of input was reached
transferTo
(long
the number of bytes to be transferred
count
,
ByteBuffer
the buffer to copy through.
throughBuffer
,
StreamSinkChannel
the destination to write to
target
)

Transfers bytes into the given channel target.

Inherited from java.nio.channels.ReadableByteChannel:
read
Inherited from java.nio.channels.ScatteringByteChannel:
readread
Inherited from org.xnio.channels.SuspendableReadChannel:
awaitReadableawaitReadablegetReadThreadisReadResumedresumeReadsshutdownReadssuspendReadswakeupReads

Method Detail

getCloseSetterback to summary
public ChannelListener.Setter<? extends StreamSourceChannel> getCloseSetter()

Redeclares org.xnio.channels.SuspendableReadChannel.getCloseSetter.

Doc from org.xnio.channels.SuspendableReadChannel.getCloseSetter.

Get the setter which can be used to change the close listener for this channel. If the channel is already closed, then the listener will not be called.

Returns:ChannelListener.Setter<? extends StreamSourceChannel>

Doc from org.xnio.channels.CloseableChannel.getCloseSetter.

the setter

getReadSetterback to summary
public ChannelListener.Setter<? extends StreamSourceChannel> getReadSetter()

Redeclares org.xnio.channels.SuspendableReadChannel.getReadSetter.

Doc from org.xnio.channels.SuspendableReadChannel.getReadSetter.

Get the setter which can be used to change the read listener for this channel.

Returns:ChannelListener.Setter<? extends StreamSourceChannel>

the setter

transferToback to summary
public long transferTo(long position, long count, FileChannel target) throws IOException

Transfers bytes into the given file from this channel. Using this method in preference to FileChannel#transferFrom(ReadableByteChannel, long, long) may provide a performance advantage on some platforms.

If the current thread is interrupted when this method is called, it may throw a java.io.InterruptedIOException; however, if this exception is thrown, the java.io.InterruptedIOException#bytesTransferred field is guaranteed to be 0.

Parameters
position:long

the position within the file from which the transfer is to begin

count:long

the number of bytes to be transferred

target:FileChannel

the file to write to

Returns:long

the number of bytes (possibly 0) that were actually transferred

Exceptions
IOException:
if an I/O error occurs
transferToback to summary
public long transferTo(long count, ByteBuffer throughBuffer, StreamSinkChannel target) throws IOException

Transfers bytes into the given channel target. On some platforms, this may avoid copying bytes between user and kernel space. On other platforms, bytes are passed through the throughBuffer parameter's buffer space. On entry, throughBuffer will be cleared. On exit, the buffer will be flipped for emptying, and may possibly be empty or may contain data. If this method returns a value less than count, then the remaining data in throughBuffer may contain data read from this channel which must be written to target to complete the operation. Note that using a direct buffer may provide an intermediate performance gain on platforms without zero-copy facilities.

If the current thread is interrupted when this method is called, it may throw a java.io.InterruptedIOException; however, if this exception is thrown, the java.io.InterruptedIOException#bytesTransferred field is guaranteed to be 0. Note that the return value is the amount of data that was actually transferred to the StreamSinkChannel. The actual amount of data read could be larger than this, and can be calculated by adding the return value and the amount of data left in throughBuffer.

Parameters
count:long

the number of bytes to be transferred

throughBuffer:ByteBuffer

the buffer to copy through.

target:StreamSinkChannel

the destination to write to

Returns:long

the number of bytes (possibly 0) that were actually transferred, or -1 if the end of input was reached

Exceptions
IOException:
if an I/O error occurs