Class AbstractKQueueStreamChannel

    • Field Detail

      • EXPECTED_TYPES

        private static final java.lang.String EXPECTED_TYPES
      • byteChannel

        private java.nio.channels.WritableByteChannel byteChannel
      • flushTask

        private final java.lang.Runnable flushTask
    • Constructor Detail

      • AbstractKQueueStreamChannel

        AbstractKQueueStreamChannel​(Channel parent,
                                    BsdSocket fd,
                                    boolean active)
      • AbstractKQueueStreamChannel

        AbstractKQueueStreamChannel​(Channel parent,
                                    BsdSocket fd,
                                    java.net.SocketAddress remote)
      • AbstractKQueueStreamChannel

        AbstractKQueueStreamChannel​(BsdSocket fd)
    • Method Detail

      • writeBytes

        private int writeBytes​(ChannelOutboundBuffer in,
                               ByteBuf buf)
                        throws java.lang.Exception
        Write bytes form the given ByteBuf to the underlying Channel.
        Parameters:
        in - the collection which contains objects to write.
        buf - the ByteBuf from which the bytes should be written
        Returns:
        The value that should be decremented from the write quantum which starts at ChannelConfig.getWriteSpinCount(). The typical use cases are as follows:
        • 0 - if no write was attempted. This is appropriate if an empty ByteBuf (or other empty content) is encountered
        • 1 - if a single call to write data was made to the OS
        • ChannelUtils.WRITE_STATUS_SNDBUF_FULL - if an attempt to write data was made to the OS, but no data was accepted
        Throws:
        java.lang.Exception
      • adjustMaxBytesPerGatheringWrite

        private void adjustMaxBytesPerGatheringWrite​(long attempted,
                                                     long written,
                                                     long oldMaxBytesPerGatheringWrite)
      • writeBytesMultiple

        private int writeBytesMultiple​(ChannelOutboundBuffer in,
                                       IovArray array)
                                throws java.io.IOException
        Write multiple bytes via IovArray.
        Parameters:
        in - the collection which contains objects to write.
        array - The array which contains the content to write.
        Returns:
        The value that should be decremented from the write quantum which starts at ChannelConfig.getWriteSpinCount(). The typical use cases are as follows:
        • 0 - if no write was attempted. This is appropriate if an empty ByteBuf (or other empty content) is encountered
        • 1 - if a single call to write data was made to the OS
        • ChannelUtils.WRITE_STATUS_SNDBUF_FULL - if an attempt to write data was made to the OS, but no data was accepted
        Throws:
        java.io.IOException - If an I/O exception occurs during write.
      • writeBytesMultiple

        private int writeBytesMultiple​(ChannelOutboundBuffer in,
                                       java.nio.ByteBuffer[] nioBuffers,
                                       int nioBufferCnt,
                                       long expectedWrittenBytes,
                                       long maxBytesPerGatheringWrite)
                                throws java.io.IOException
        Write multiple bytes via ByteBuffer array.
        Parameters:
        in - the collection which contains objects to write.
        nioBuffers - The buffers to write.
        nioBufferCnt - The number of buffers to write.
        expectedWrittenBytes - The number of bytes we expect to write.
        maxBytesPerGatheringWrite - The maximum number of bytes we should attempt to write.
        Returns:
        The value that should be decremented from the write quantum which starts at ChannelConfig.getWriteSpinCount(). The typical use cases are as follows:
        • 0 - if no write was attempted. This is appropriate if an empty ByteBuf (or other empty content) is encountered
        • 1 - if a single call to write data was made to the OS
        • ChannelUtils.WRITE_STATUS_SNDBUF_FULL - if an attempt to write data was made to the OS, but no data was accepted
        Throws:
        java.io.IOException - If an I/O exception occurs during write.
      • writeDefaultFileRegion

        private int writeDefaultFileRegion​(ChannelOutboundBuffer in,
                                           DefaultFileRegion region)
                                    throws java.lang.Exception
        Parameters:
        in - the collection which contains objects to write.
        region - the DefaultFileRegion from which the bytes should be written
        Returns:
        The value that should be decremented from the write quantum which starts at ChannelConfig.getWriteSpinCount(). The typical use cases are as follows:
        • 0 - if no write was attempted. This is appropriate if an empty ByteBuf (or other empty content) is encountered
        • 1 - if a single call to write data was made to the OS
        • ChannelUtils.WRITE_STATUS_SNDBUF_FULL - if an attempt to write data was made to the OS, but no data was accepted
        Throws:
        java.lang.Exception
      • writeFileRegion

        private int writeFileRegion​(ChannelOutboundBuffer in,
                                    FileRegion region)
                             throws java.lang.Exception
        Write a FileRegion
        Parameters:
        in - the collection which contains objects to write.
        region - the FileRegion from which the bytes should be written
        Returns:
        The value that should be decremented from the write quantum which starts at ChannelConfig.getWriteSpinCount(). The typical use cases are as follows:
        • 0 - if no write was attempted. This is appropriate if an empty ByteBuf (or other empty content) is encountered
        • 1 - if a single call to write data was made to the OS
        • ChannelUtils.WRITE_STATUS_SNDBUF_FULL - if an attempt to write data was made to the OS, but no data was accepted
        Throws:
        java.lang.Exception
      • doWriteSingle

        protected int doWriteSingle​(ChannelOutboundBuffer in)
                             throws java.lang.Exception
        Attempt to write a single object.
        Parameters:
        in - the collection which contains objects to write.
        Returns:
        The value that should be decremented from the write quantum which starts at ChannelConfig.getWriteSpinCount(). The typical use cases are as follows:
        • 0 - if no write was attempted. This is appropriate if an empty ByteBuf (or other empty content) is encountered
        • 1 - if a single call to write data was made to the OS
        • ChannelUtils.WRITE_STATUS_SNDBUF_FULL - if an attempt to write data was made to the OS, but no data was accepted
        Throws:
        java.lang.Exception - If an I/O error occurs.
      • doWriteMultiple

        private int doWriteMultiple​(ChannelOutboundBuffer in)
                             throws java.lang.Exception
        Attempt to write multiple ByteBuf objects.
        Parameters:
        in - the collection which contains objects to write.
        Returns:
        The value that should be decremented from the write quantum which starts at ChannelConfig.getWriteSpinCount(). The typical use cases are as follows:
        • 0 - if no write was attempted. This is appropriate if an empty ByteBuf (or other empty content) is encountered
        • 1 - if a single call to write data was made to the OS
        • ChannelUtils.WRITE_STATUS_SNDBUF_FULL - if an attempt to write data was made to the OS, but no data was accepted
        Throws:
        java.lang.Exception - If an I/O error occurs.
      • doShutdownOutput

        @UnstableApi
        protected final void doShutdownOutput()
                                       throws java.lang.Exception
        Description copied from class: AbstractChannel
        Called when conditions justify shutting down the output portion of the channel. This may happen if a write operation throws an exception.
        Overrides:
        doShutdownOutput in class AbstractChannel
        Throws:
        java.lang.Exception
      • isOutputShutdown

        public boolean isOutputShutdown()
        Specified by:
        isOutputShutdown in interface DuplexChannel
        See Also:
        Socket.isOutputShutdown()
      • isInputShutdown

        public boolean isInputShutdown()
        Description copied from interface: DuplexChannel
        Returns true if and only if the remote peer shut down its output so that no more data is received from this channel. Note that the semantic of this method is different from that of Socket.shutdownInput() and Socket.isInputShutdown().
        Specified by:
        isInputShutdown in interface DuplexChannel
      • isShutdown

        public boolean isShutdown()
        Description copied from interface: DuplexChannel
        Determine if both the input and output of this channel have been shutdown.
        Specified by:
        isShutdown in interface DuplexChannel
      • shutdownInput0

        private void shutdownInput0​(ChannelPromise promise)
      • shutdown

        public ChannelFuture shutdown()
        Description copied from interface: DuplexChannel
        Will shutdown the input and output sides of this channel.
        Specified by:
        shutdown in interface DuplexChannel
        Returns:
        will be completed when both shutdown operations complete.
      • shutdown

        public ChannelFuture shutdown​(ChannelPromise promise)
        Description copied from interface: DuplexChannel
        Will shutdown the input and output sides of this channel.
        Specified by:
        shutdown in interface DuplexChannel
        Parameters:
        promise - will be completed when both shutdown operations complete.
        Returns:
        will be completed when both shutdown operations complete.