Package org.xnio.channels
Interface StreamSourceChannel
- All Superinterfaces:
AutoCloseable,Channel,Closeable,CloseableChannel,Configurable,InterruptibleChannel,ReadableByteChannel,ScatteringByteChannel,SuspendableReadChannel
- All Known Subinterfaces:
ConnectedSslStreamChannel,ConnectedStreamChannel,StreamChannel
- All Known Implementing Classes:
AssembledConnectedSslStreamChannel,AssembledConnectedStreamChannel,AssembledStreamChannel,ConduitStreamSourceChannel,EmptyStreamSourceChannel,FixedLengthStreamSourceChannel,PushBackStreamChannel,SplitStreamSourceChannel
public interface StreamSourceChannel
extends ReadableByteChannel, 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
Modifier and TypeMethodDescriptionChannelListener.Setter<? extends StreamSourceChannel>Get the setter which can be used to change the close listener for this channel.ChannelListener.Setter<? extends StreamSourceChannel>Get the setter which can be used to change the read listener for this channel.longtransferTo(long position, long count, FileChannel target) Transfers bytes into the given file from this channel.longtransferTo(long count, ByteBuffer throughBuffer, StreamSinkChannel target) Transfers bytes into the given channel target.Methods inherited from interface org.xnio.channels.CloseableChannel
close, getIoThread, getWorkerMethods inherited from interface org.xnio.channels.Configurable
getOption, setOption, supportsOptionMethods inherited from interface java.nio.channels.ReadableByteChannel
readMethods inherited from interface java.nio.channels.ScatteringByteChannel
read, readMethods inherited from interface org.xnio.channels.SuspendableReadChannel
awaitReadable, awaitReadable, getReadThread, isReadResumed, resumeReads, shutdownReads, suspendReads, wakeupReads
-
Method Details
-
transferTo
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.bytesTransferredfield 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:
IOException- if an I/O error occurs
-
transferTo
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 thethroughBufferparameter's buffer space. On entry,throughBufferwill 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 inthroughBuffermay contain data read from this channel which must be written totargetto 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.bytesTransferredfield 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:
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:
getReadSetterin 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:
getCloseSetterin interfaceCloseableChannel- Specified by:
getCloseSetterin interfaceSuspendableReadChannel- Returns:
- the setter
-