-
- All Superinterfaces:
java.lang.AutoCloseable
,java.nio.channels.Channel
,java.io.Closeable
,CloseableChannel
,Configurable
,java.nio.channels.InterruptibleChannel
,java.nio.channels.ReadableByteChannel
,java.nio.channels.ScatteringByteChannel
,SuspendableReadChannel
- All Known Subinterfaces:
ConnectedSslStreamChannel
,ConnectedStreamChannel
,StreamChannel
- All Known Implementing Classes:
AssembledConnectedSslStreamChannel
,AssembledConnectedStreamChannel
,AssembledStreamChannel
,ConduitStreamSourceChannel
,EmptyStreamSourceChannel
,FixedLengthStreamSourceChannel
,PushBackStreamChannel
,SplitStreamSourceChannel
public interface StreamSourceChannel extends java.nio.channels.ReadableByteChannel, java.nio.channels.ScatteringByteChannel, SuspendableReadChannel
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.
-
-
Field Summary
-
Fields inherited from interface org.xnio.channels.Configurable
EMPTY
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description ChannelListener.Setter<? extends StreamSourceChannel>
getCloseSetter()
Get the setter which can be used to change the close listener for this channel.ChannelListener.Setter<? extends StreamSourceChannel>
getReadSetter()
Get the setter which can be used to change the read listener for this channel.long
transferTo(long position, long count, java.nio.channels.FileChannel target)
Transfers bytes into the given file from this channel.long
transferTo(long count, java.nio.ByteBuffer throughBuffer, StreamSinkChannel target)
Transfers bytes into the given channel target.-
Methods inherited from interface org.xnio.channels.CloseableChannel
close, getIoThread, getWorker
-
Methods inherited from interface org.xnio.channels.Configurable
getOption, setOption, supportsOption
-
Methods inherited from interface org.xnio.channels.SuspendableReadChannel
awaitReadable, awaitReadable, getReadThread, isReadResumed, resumeReads, shutdownReads, suspendReads, wakeupReads
-
-
-
-
Method Detail
-
transferTo
long transferTo(long position, long count, java.nio.channels.FileChannel target) throws java.io.IOException
Transfers bytes into the given file from this channel. Using this method in preference toFileChannel.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
InterruptedIOException
; however, if this exception is thrown, theInterruptedIOException.bytesTransferred
field is guaranteed to be 0.- Parameters:
position
- the position within the file from which the transfer is to begincount
- the number of bytes to be transferredtarget
- the file to write to- Returns:
- the number of bytes (possibly 0) that were actually transferred
- Throws:
java.io.IOException
- if an I/O error occurs
-
transferTo
long transferTo(long count, java.nio.ByteBuffer throughBuffer, StreamSinkChannel target) throws java.io.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 thethroughBuffer
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 thancount
, then the remaining data inthroughBuffer
may contain data read from this channel which must be written totarget
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
InterruptedIOException
; however, if this exception is thrown, theInterruptedIOException.bytesTransferred
field is guaranteed to be 0. Note that the return value is the amount of data that was actually transferred to theStreamSinkChannel
. 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 inthroughBuffer
.- Parameters:
count
- the number of bytes to be transferredthroughBuffer
- the buffer to copy through.target
- the destination to write to- Returns:
- the number of bytes (possibly 0) that were actually transferred, or -1 if the end of input was reached
- Throws:
java.io.IOException
- if an I/O error occurs
-
getReadSetter
ChannelListener.Setter<? extends StreamSourceChannel> getReadSetter()
Get the setter which can be used to change the read listener for this channel.- Specified by:
getReadSetter
in interfaceSuspendableReadChannel
- Returns:
- the setter
-
getCloseSetter
ChannelListener.Setter<? extends StreamSourceChannel> 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.- Specified by:
getCloseSetter
in interfaceCloseableChannel
- Specified by:
getCloseSetter
in interfaceSuspendableReadChannel
- Returns:
- the setter
-
-