Package io.netty.channel.kqueue
Class AbstractKQueueStreamChannel
java.lang.Object
io.netty.util.DefaultAttributeMap
io.netty.channel.AbstractChannel
io.netty.channel.kqueue.AbstractKQueueChannel
io.netty.channel.kqueue.AbstractKQueueStreamChannel
- All Implemented Interfaces:
Channel
,ChannelOutboundInvoker
,DuplexChannel
,UnixChannel
,AttributeMap
,Comparable<Channel>
- Direct Known Subclasses:
KQueueDomainSocketChannel
,KQueueSocketChannel
@UnstableApi
public abstract class AbstractKQueueStreamChannel
extends AbstractKQueueChannel
implements DuplexChannel
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate final class
(package private) class
Nested classes/interfaces inherited from class io.netty.channel.kqueue.AbstractKQueueChannel
AbstractKQueueChannel.AbstractKQueueUnsafe
Nested classes/interfaces inherited from class io.netty.channel.AbstractChannel
AbstractChannel.AbstractUnsafe
Nested classes/interfaces inherited from interface io.netty.channel.Channel
Channel.Unsafe
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate WritableByteChannel
private static final String
private final Runnable
private static final InternalLogger
private static final ChannelMetadata
Fields inherited from class io.netty.channel.kqueue.AbstractKQueueChannel
active, inputClosedSeenErrorOnRead, readReadyRunnablePending, socket
-
Constructor Summary
ConstructorsConstructorDescriptionAbstractKQueueStreamChannel
(Channel parent, BsdSocket fd, boolean active) AbstractKQueueStreamChannel
(Channel parent, BsdSocket fd, SocketAddress remote) -
Method Summary
Modifier and TypeMethodDescriptionprivate void
adjustMaxBytesPerGatheringWrite
(long attempted, long written, long oldMaxBytesPerGatheringWrite) protected final void
Called when conditions justify shutting down the output portion of the channel.protected void
Flush the content of the given buffer to the remote peer.private int
Attempt to write multipleByteBuf
objects.protected int
Attempt to write a single object.protected Object
Invoked when a new message is added to aChannelOutboundBuffer
of thisAbstractChannel
, so that theChannel
implementation converts the message to another.boolean
Returnstrue
if and only if the remote peer shut down its output so that no more data is received from this channel.boolean
boolean
Determine if both the input and output of this channel have been shutdown.metadata()
Create a newAbstractChannel.AbstractUnsafe
instance which will be used for the life-time of theChannel
shutdown()
Will shutdown the input and output sides of this channel.shutdown
(ChannelPromise promise) Will shutdown the input and output sides of this channel.private static void
shutdownDone
(ChannelFuture shutdownOutputFuture, ChannelFuture shutdownInputFuture, ChannelPromise promise) shutdownInput
(ChannelPromise promise) Will shutdown the input and notifyChannelPromise
.private void
shutdownInput0
(ChannelPromise promise) shutdownOutput
(ChannelPromise promise) Will shutdown the output and notifyChannelPromise
.private void
shutdownOutputDone
(ChannelFuture shutdownOutputFuture, ChannelPromise promise) private int
writeBytes
(ChannelOutboundBuffer in, ByteBuf buf) private int
writeBytesMultiple
(ChannelOutboundBuffer in, IovArray array) Write multiple bytes viaIovArray
.private int
writeBytesMultiple
(ChannelOutboundBuffer in, ByteBuffer[] nioBuffers, int nioBufferCnt, long expectedWrittenBytes, long maxBytesPerGatheringWrite) Write multiple bytes viaByteBuffer
array.private int
Write aDefaultFileRegion
private int
writeFileRegion
(ChannelOutboundBuffer in, FileRegion region) Write aFileRegion
Methods inherited from class io.netty.channel.kqueue.AbstractKQueueChannel
checkResolvable, clearReadFilter, config, doBeginRead, doBind, doClose, doConnect, doConnect0, doDeregister, doDisconnect, doReadBytes, doRegister, doWriteBytes, fd, isActive, isCompatible, isOpen, isSoErrorZero, localAddress0, newDirectBuffer, newDirectBuffer, readFilter, remoteAddress0, resetCachedAddresses, shouldBreakReadReady, unregisterFilters, writeFilter
Methods inherited from class io.netty.channel.AbstractChannel
alloc, bind, bind, bytesBeforeUnwritable, bytesBeforeWritable, close, close, closeFuture, compareTo, connect, connect, connect, connect, deregister, deregister, disconnect, disconnect, equals, eventLoop, flush, hashCode, id, invalidateLocalAddress, invalidateRemoteAddress, isRegistered, isWritable, localAddress, maxMessagesPerWrite, newChannelPipeline, newFailedFuture, newId, newProgressivePromise, newPromise, newSucceededFuture, parent, pipeline, read, remoteAddress, toString, unsafe, validateFileRegion, voidPromise, write, write, writeAndFlush, writeAndFlush
Methods inherited from class io.netty.util.DefaultAttributeMap
attr, hasAttr
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface io.netty.util.AttributeMap
attr, hasAttr
Methods inherited from interface io.netty.channel.Channel
alloc, bytesBeforeUnwritable, bytesBeforeWritable, closeFuture, config, eventLoop, flush, id, isActive, isOpen, isRegistered, isWritable, localAddress, parent, pipeline, read, remoteAddress, unsafe
Methods inherited from interface io.netty.channel.ChannelOutboundInvoker
bind, bind, close, close, connect, connect, connect, connect, deregister, deregister, disconnect, disconnect, newFailedFuture, newProgressivePromise, newPromise, newSucceededFuture, voidPromise, write, write, writeAndFlush, writeAndFlush
Methods inherited from interface java.lang.Comparable
compareTo
-
Field Details
-
logger
-
METADATA
-
EXPECTED_TYPES
-
byteChannel
-
flushTask
-
-
Constructor Details
-
AbstractKQueueStreamChannel
-
AbstractKQueueStreamChannel
AbstractKQueueStreamChannel(Channel parent, BsdSocket fd, SocketAddress remote) -
AbstractKQueueStreamChannel
AbstractKQueueStreamChannel(BsdSocket fd)
-
-
Method Details
-
newUnsafe
Description copied from class:AbstractChannel
Create a newAbstractChannel.AbstractUnsafe
instance which will be used for the life-time of theChannel
- Specified by:
newUnsafe
in classAbstractKQueueChannel
-
metadata
Description copied from interface:Channel
- Specified by:
metadata
in interfaceChannel
- Overrides:
metadata
in classAbstractKQueueChannel
-
writeBytes
- Parameters:
in
- the collection which contains objects to write.buf
- theByteBuf
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
- 0 - if no write was attempted. This is appropriate if an empty
- Throws:
Exception
-
adjustMaxBytesPerGatheringWrite
private void adjustMaxBytesPerGatheringWrite(long attempted, long written, long oldMaxBytesPerGatheringWrite) -
writeBytesMultiple
Write multiple bytes viaIovArray
.- 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
- 0 - if no write was attempted. This is appropriate if an empty
- Throws:
IOException
- If an I/O exception occurs during write.
-
writeBytesMultiple
private int writeBytesMultiple(ChannelOutboundBuffer in, ByteBuffer[] nioBuffers, int nioBufferCnt, long expectedWrittenBytes, long maxBytesPerGatheringWrite) throws IOException Write multiple bytes viaByteBuffer
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
- 0 - if no write was attempted. This is appropriate if an empty
- Throws:
IOException
- If an I/O exception occurs during write.
-
writeDefaultFileRegion
private int writeDefaultFileRegion(ChannelOutboundBuffer in, DefaultFileRegion region) throws Exception Write aDefaultFileRegion
- Parameters:
in
- the collection which contains objects to write.region
- theDefaultFileRegion
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
- 0 - if no write was attempted. This is appropriate if an empty
- Throws:
Exception
-
writeFileRegion
Write aFileRegion
- Parameters:
in
- the collection which contains objects to write.region
- theFileRegion
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
- 0 - if no write was attempted. This is appropriate if an empty
- Throws:
Exception
-
doWrite
Description copied from class:AbstractChannel
Flush the content of the given buffer to the remote peer.- Specified by:
doWrite
in classAbstractChannel
- Throws:
Exception
-
doWriteSingle
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
- 0 - if no write was attempted. This is appropriate if an empty
- Throws:
Exception
- If an I/O error occurs.
-
doWriteMultiple
Attempt to write multipleByteBuf
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
- 0 - if no write was attempted. This is appropriate if an empty
- Throws:
Exception
- If an I/O error occurs.
-
filterOutboundMessage
Description copied from class:AbstractChannel
Invoked when a new message is added to aChannelOutboundBuffer
of thisAbstractChannel
, so that theChannel
implementation converts the message to another. (e.g. heap buffer -> direct buffer)- Overrides:
filterOutboundMessage
in classAbstractChannel
-
doShutdownOutput
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 classAbstractChannel
- Throws:
Exception
-
isOutputShutdown
public boolean isOutputShutdown()- Specified by:
isOutputShutdown
in interfaceDuplexChannel
- See Also:
-
isInputShutdown
public boolean isInputShutdown()Description copied from interface:DuplexChannel
Returnstrue
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 ofSocket.shutdownInput()
andSocket.isInputShutdown()
.- Specified by:
isInputShutdown
in interfaceDuplexChannel
-
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 interfaceDuplexChannel
-
shutdownOutput
- Specified by:
shutdownOutput
in interfaceDuplexChannel
- See Also:
-
shutdownOutput
Description copied from interface:DuplexChannel
Will shutdown the output and notifyChannelPromise
.- Specified by:
shutdownOutput
in interfaceDuplexChannel
- See Also:
-
shutdownInput
- Specified by:
shutdownInput
in interfaceDuplexChannel
- See Also:
-
shutdownInput
Description copied from interface:DuplexChannel
Will shutdown the input and notifyChannelPromise
.- Specified by:
shutdownInput
in interfaceDuplexChannel
- See Also:
-
shutdownInput0
-
shutdown
Description copied from interface:DuplexChannel
Will shutdown the input and output sides of this channel.- Specified by:
shutdown
in interfaceDuplexChannel
- Returns:
- will be completed when both shutdown operations complete.
-
shutdown
Description copied from interface:DuplexChannel
Will shutdown the input and output sides of this channel.- Specified by:
shutdown
in interfaceDuplexChannel
- Parameters:
promise
- will be completed when both shutdown operations complete.- Returns:
- will be completed when both shutdown operations complete.
-
shutdownOutputDone
-
shutdownDone
private static void shutdownDone(ChannelFuture shutdownOutputFuture, ChannelFuture shutdownInputFuture, ChannelPromise promise)
-