Module 

Class StreamSinkChannelWrappingConduit

    • Constructor Detail

      • StreamSinkChannelWrappingConduit

        public StreamSinkChannelWrappingConduit​(StreamSinkChannel channel)
        Construct a new instance.
        Parameters:
        channel - the channel to wrap
    • Method Detail

      • transferFrom

        public long transferFrom​(java.nio.channels.FileChannel src,
                                 long position,
                                 long count)
                          throws java.io.IOException
        Description copied from interface: StreamSinkConduit
        Transfer bytes into this conduit from the given file.
        Specified by:
        transferFrom in interface StreamSinkConduit
        Parameters:
        src - the file to read from
        position - the position within the file from which the transfer is to begin
        count - the number of bytes to be transferred
        Returns:
        the number of bytes (possibly 0) that were actually transferred
        Throws:
        java.io.IOException - if an I/O error occurs
      • transferFrom

        public long transferFrom​(StreamSourceChannel source,
                                 long count,
                                 java.nio.ByteBuffer throughBuffer)
                          throws java.io.IOException
        Description copied from interface: StreamSinkConduit
        Transfers bytes from the given channel source. On entry, throughBuffer will be cleared. On exit, the buffer will be flipped for emptying, and may 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 source which must be written to this channel to complete the operation.
        Specified by:
        transferFrom in interface StreamSinkConduit
        Parameters:
        source - the source to read from
        count - the number of bytes to be transferred
        throughBuffer - the buffer to copy through.
        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
      • write

        public int write​(java.nio.ByteBuffer src)
                  throws java.io.IOException
        Description copied from interface: StreamSinkConduit
        Writes a sequence of bytes to this conduit from the given buffer.
        Specified by:
        write in interface StreamSinkConduit
        Parameters:
        src - the buffer containing data to write
        Returns:
        the number of bytes written, possibly 0
        Throws:
        java.nio.channels.ClosedChannelException - if this conduit's SinkConduit.terminateWrites() method was previously called
        java.io.IOException - if an error occurs
      • write

        public long write​(java.nio.ByteBuffer[] srcs,
                          int offs,
                          int len)
                   throws java.io.IOException
        Description copied from interface: StreamSinkConduit
        Writes a sequence of bytes to this conduit from the given buffers.
        Specified by:
        write in interface StreamSinkConduit
        Parameters:
        srcs - the buffers containing data to write
        offs - the offset into the buffer array
        len - the number of buffers to write
        Returns:
        the number of bytes written, possibly 0
        Throws:
        java.nio.channels.ClosedChannelException - if this conduit's SinkConduit.terminateWrites() method was previously called
        java.io.IOException - if an error occurs
      • writeFinal

        public int writeFinal​(java.nio.ByteBuffer src)
                       throws java.io.IOException
        Description copied from interface: StreamSinkConduit
        Writes some data to the conduit, with the same semantics as StreamSinkConduit.write(java.nio.ByteBuffer). If all the data is written out then the conduit will have its writes terminated. Semantically this method is equivalent to: int rem = src.remaining(); int written = conduit.write(src); if(written == rem) { conduit.terminateWrites() }
        Specified by:
        writeFinal in interface StreamSinkConduit
        Parameters:
        src - The data to write
        Returns:
        The amount of data that was actually written.
        Throws:
        java.io.IOException
      • writeFinal

        public long writeFinal​(java.nio.ByteBuffer[] srcs,
                               int offset,
                               int length)
                        throws java.io.IOException
        Description copied from interface: StreamSinkConduit
        Writes some data to the conduit, with the same semantics as StreamSinkConduit.write(java.nio.ByteBuffer[], int, int). If all the data is written out then the conduit will have its writes terminated.
        Specified by:
        writeFinal in interface StreamSinkConduit
        Parameters:
        srcs - The buffers from which bytes are to be retrieved
        offset - The offset within the buffer array of the first buffer from which bytes are to be retrieved; must be non-negative and no larger than srcs.length
        length - The maximum number of buffers to be accessed; must be non-negative and no larger than srcs.length - offset
        Returns:
        The amount of data that was actually written
        Throws:
        java.io.IOException
      • terminateWrites

        public void terminateWrites()
                             throws java.io.IOException
        Description copied from interface: SinkConduit
        Signal that no more write data is forthcoming. The conduit must be SinkConduit.flush()ed before it is considered to be shut down.
        Specified by:
        terminateWrites in interface SinkConduit
        Throws:
        java.io.IOException
      • isWriteShutdown

        public boolean isWriteShutdown()
        Description copied from interface: SinkConduit
        Determine whether writes have been fully shut down on this conduit.
        Specified by:
        isWriteShutdown in interface SinkConduit
        Returns:
        true if writes are fully shut down, false otherwise
      • resumeWrites

        public void resumeWrites()
        Description copied from interface: SinkConduit
        Indicate that the conduit's WriteReadyHandler should be invoked as soon as data can be written without blocking.
        Specified by:
        resumeWrites in interface SinkConduit
      • wakeupWrites

        public void wakeupWrites()
        Description copied from interface: SinkConduit
        Indicate that the conduit's WriteReadyHandler should be invoked immediately, and then again as soon as data can be written without blocking.
        Specified by:
        wakeupWrites in interface SinkConduit
      • isWriteResumed

        public boolean isWriteResumed()
        Description copied from interface: SinkConduit
        Determine whether write notifications are currently enabled.
        Specified by:
        isWriteResumed in interface SinkConduit
        Returns:
        true if write notifications are enabled
      • awaitWritable

        public void awaitWritable()
                           throws java.io.IOException
        Description copied from interface: SinkConduit
        Block until this channel becomes writable again. This method may return spuriously before the channel becomes writable.
        Specified by:
        awaitWritable in interface SinkConduit
        Throws:
        java.io.InterruptedIOException - if the operation is interrupted; the thread's interrupt flag will be set as well
        java.io.IOException - if an I/O error occurs
      • awaitWritable

        public void awaitWritable​(long time,
                                  java.util.concurrent.TimeUnit timeUnit)
                           throws java.io.IOException
        Description copied from interface: SinkConduit
        Block until this conduit becomes writable again, or until the timeout expires. This method may return spuriously before the conduit becomes writable or the timeout expires.
        Specified by:
        awaitWritable in interface SinkConduit
        Parameters:
        time - the time to wait
        timeUnit - the time unit
        Throws:
        java.io.InterruptedIOException - if the operation is interrupted; the thread's interrupt flag will be set as well
        java.io.IOException - if an I/O error occurs
      • getWriteThread

        public XnioIoThread getWriteThread()
        Description copied from interface: SinkConduit
        Get the write thread for this conduit.
        Specified by:
        getWriteThread in interface SinkConduit
        Returns:
        the thread, or null if none is configured or available
      • setWriteReadyHandler

        public void setWriteReadyHandler​(WriteReadyHandler handler)
        Description copied from interface: SinkConduit
        Set the handler which should receive readiness notifications. A filter may pass this invocation on to the filter it wraps, or it may substitute itself.
        Specified by:
        setWriteReadyHandler in interface SinkConduit
      • truncateWrites

        public void truncateWrites()
                            throws java.io.IOException
        Description copied from interface: SinkConduit
        Terminate writes and discard any outstanding write data. The conduit is terminated and flushed regardless of the outcome of this method.
        Specified by:
        truncateWrites in interface SinkConduit
        Throws:
        java.io.IOException - if channel termination failed for some reason
      • flush

        public boolean flush()
                      throws java.io.IOException
        Description copied from interface: SinkConduit
        Flush out any unwritten, buffered output.
        Specified by:
        flush in interface SinkConduit
        Returns:
        true if everything is flushed, false otherwise
        Throws:
        java.io.IOException - if flush fails
      • getWorker

        public XnioWorker getWorker()
        Description copied from interface: Conduit
        Get the XNIO worker associated with this conduit.
        Specified by:
        getWorker in interface Conduit
        Returns:
        the XNIO worker associated with this conduit