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
public abstract class AbstractKQueueStreamChannel
extends AbstractKQueueChannel
implements DuplexChannel
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate final class(package private) classNested classes/interfaces inherited from class io.netty.channel.kqueue.AbstractKQueueChannel
AbstractKQueueChannel.AbstractKQueueUnsafeNested classes/interfaces inherited from class io.netty.channel.AbstractChannel
AbstractChannel.AbstractUnsafeNested classes/interfaces inherited from interface io.netty.channel.Channel
Channel.Unsafe -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate WritableByteChannelprivate static final Stringprivate final Runnableprivate static final InternalLoggerprivate static final ChannelMetadataFields inherited from class io.netty.channel.kqueue.AbstractKQueueChannel
active, inputClosedSeenErrorOnRead, readReadyRunnablePending, registration, socket -
Constructor Summary
ConstructorsConstructorDescriptionAbstractKQueueStreamChannel(Channel parent, BsdSocket fd, boolean active) AbstractKQueueStreamChannel(Channel parent, BsdSocket fd, SocketAddress remote) -
Method Summary
Modifier and TypeMethodDescriptionprivate voidadjustMaxBytesPerGatheringWrite(long attempted, long written, long oldMaxBytesPerGatheringWrite) protected final voidCalled when conditions justify shutting down the output portion of the channel.protected voidFlush the content of the given buffer to the remote peer.private intAttempt to write multipleByteBufobjects.protected intAttempt to write a single object.protected ObjectInvoked when a new message is added to aChannelOutboundBufferof thisAbstractChannel, so that theChannelimplementation converts the message to another.booleanReturnstrueif and only if the remote peer shut down its output so that no more data is received from this channel.booleanbooleanDetermine if both the input and output of this channel have been shutdown.metadata()Create a newAbstractChannel.AbstractUnsafeinstance which will be used for the life-time of theChannelshutdown()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 voidshutdownDone(ChannelFuture shutdownOutputFuture, ChannelFuture shutdownInputFuture, ChannelPromise promise) shutdownInput(ChannelPromise promise) Will shutdown the input and notifyChannelPromise.private voidshutdownInput0(ChannelPromise promise) shutdownOutput(ChannelPromise promise) Will shutdown the output and notifyChannelPromise.private voidshutdownOutputDone(ChannelFuture shutdownOutputFuture, ChannelPromise promise) private intwriteBytes(ChannelOutboundBuffer in, ByteBuf buf) private intwriteBytesMultiple(ChannelOutboundBuffer in, IovArray array) Write multiple bytes viaIovArray.private intwriteBytesMultiple(ChannelOutboundBuffer in, ByteBuffer[] nioBuffers, int nioBufferCnt, long expectedWrittenBytes, long maxBytesPerGatheringWrite) Write multiple bytes viaByteBufferarray.private intWrite aDefaultFileRegionprivate intwriteFileRegion(ChannelOutboundBuffer in, FileRegion region) Write aFileRegionMethods 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, writeFilterMethods 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, writeAndFlushMethods inherited from class io.netty.util.DefaultAttributeMap
attr, hasAttrMethods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface io.netty.util.AttributeMap
attr, hasAttrMethods inherited from interface io.netty.channel.Channel
alloc, bytesBeforeUnwritable, bytesBeforeWritable, closeFuture, config, eventLoop, flush, id, isActive, isOpen, isRegistered, isWritable, localAddress, parent, pipeline, read, remoteAddress, unsafeMethods 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, writeAndFlushMethods 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:AbstractChannelCreate a newAbstractChannel.AbstractUnsafeinstance which will be used for the life-time of theChannel- Specified by:
newUnsafein classAbstractKQueueChannel
-
metadata
Description copied from interface:Channel- Specified by:
metadatain interfaceChannel- Overrides:
metadatain classAbstractKQueueChannel
-
writeBytes
- Parameters:
in- the collection which contains objects to write.buf- theByteBuffrom 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 viaByteBufferarray.- 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- theDefaultFileRegionfrom 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- theFileRegionfrom 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:AbstractChannelFlush the content of the given buffer to the remote peer.- Specified by:
doWritein 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 multipleByteBufobjects.- 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:AbstractChannelInvoked when a new message is added to aChannelOutboundBufferof thisAbstractChannel, so that theChannelimplementation converts the message to another. (e.g. heap buffer -> direct buffer)- Overrides:
filterOutboundMessagein classAbstractChannel
-
doShutdownOutput
Description copied from class:AbstractChannelCalled when conditions justify shutting down the output portion of the channel. This may happen if a write operation throws an exception.- Overrides:
doShutdownOutputin classAbstractChannel- Throws:
Exception
-
isOutputShutdown
public boolean isOutputShutdown()- Specified by:
isOutputShutdownin interfaceDuplexChannel- See Also:
-
isInputShutdown
public boolean isInputShutdown()Description copied from interface:DuplexChannelReturnstrueif 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:
isInputShutdownin interfaceDuplexChannel
-
isShutdown
public boolean isShutdown()Description copied from interface:DuplexChannelDetermine if both the input and output of this channel have been shutdown.- Specified by:
isShutdownin interfaceDuplexChannel
-
shutdownOutput
- Specified by:
shutdownOutputin interfaceDuplexChannel- See Also:
-
shutdownOutput
Description copied from interface:DuplexChannelWill shutdown the output and notifyChannelPromise.- Specified by:
shutdownOutputin interfaceDuplexChannel- See Also:
-
shutdownInput
- Specified by:
shutdownInputin interfaceDuplexChannel- See Also:
-
shutdownInput
Description copied from interface:DuplexChannelWill shutdown the input and notifyChannelPromise.- Specified by:
shutdownInputin interfaceDuplexChannel- See Also:
-
shutdownInput0
-
shutdown
Description copied from interface:DuplexChannelWill shutdown the input and output sides of this channel.- Specified by:
shutdownin interfaceDuplexChannel- Returns:
- will be completed when both shutdown operations complete.
-
shutdown
Description copied from interface:DuplexChannelWill shutdown the input and output sides of this channel.- Specified by:
shutdownin 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)
-