Class ChannelSet
- All Implemented Interfaces:
AsyncCloseable
,ListenableAsyncCloseable
Channel
s to provide a mechanism for closing all of them.
Channels are removed from the set when they are closed.
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final io.netty.util.AttributeKey<io.servicetalk.transport.netty.internal.PrivilegedListenableAsyncCloseable>
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionboolean
addIfAbsent
(io.netty.channel.Channel channel) Add aChannel
to thisChannelSet
, if it is not already present.Used to close/shutdown a resource.Used to close/shutdown a resource, similar toAsyncCloseable.closeAsync()
, but attempts to cleanup state before abruptly closing.onClose()
Returns aCompletable
that is notified once theListenableAsyncCloseable
was closed.Returns aCompletable
that is notified when closing begins.
-
Field Details
-
CHANNEL_CLOSEABLE_KEY
public static final io.netty.util.AttributeKey<io.servicetalk.transport.netty.internal.PrivilegedListenableAsyncCloseable> CHANNEL_CLOSEABLE_KEY
-
-
Constructor Details
-
ChannelSet
New instance.- Parameters:
offloadingExecutor
-Executor
to use for offloading close signals orExecutors.immediate()
if close will not be offloaded.
-
-
Method Details
-
addIfAbsent
public boolean addIfAbsent(io.netty.channel.Channel channel) Add aChannel
to thisChannelSet
, if it is not already present.Channel.id()
is used to check uniqueness.- Parameters:
channel
- TheChannel
to add.- Returns:
true
if the channel was added successfully,false
otherwise.
-
closeAsync
Description copied from interface:AsyncCloseable
Used to close/shutdown a resource.- Specified by:
closeAsync
in interfaceAsyncCloseable
- Returns:
- A
Completable
that is notified once the close is complete.
-
closeAsyncGracefully
Description copied from interface:AsyncCloseable
Used to close/shutdown a resource, similar toAsyncCloseable.closeAsync()
, but attempts to cleanup state before abruptly closing. This provides a hint that implementations can use to stop accepting new work and finish in flight work. This method is implemented on a "best effort" basis and may be equivalent toAsyncCloseable.closeAsync()
.Note: Implementations may or may not apply a timeout for this operation to complete, if a caller does not want to wait indefinitely, and are unsure if the implementation applies a timeout, it is advisable to apply a timeout and force a call to
AsyncCloseable.closeAsync()
.- Specified by:
closeAsyncGracefully
in interfaceAsyncCloseable
- Returns:
- A
Completable
that is notified once the close is complete.
-
onClose
Description copied from interface:ListenableAsyncCloseable
Returns aCompletable
that is notified once theListenableAsyncCloseable
was closed.- Specified by:
onClose
in interfaceListenableAsyncCloseable
- Returns:
- the
Completable
that is notified on close.
-
onClosing
Description copied from interface:ListenableAsyncCloseable
Returns aCompletable
that is notified when closing begins.Closing begin might be when a close operation is initiated locally (e.g. subscribing to
AsyncCloseable.closeAsync()
) or it could also be a transport event received from a remote peer (e.g. read aconnection: close
header).For backwards compatibility this method maybe functionally equivalent to
ListenableAsyncCloseable.onClose()
. Therefore, provides a best-effort leading edge notification of closing, but may fall back to notification on trailing edge.The goal of this method is often to notify asap when closing so this method may not be offloaded and care must be taken to avoid blocking if subscribing to the return
Completable
.- Specified by:
onClosing
in interfaceListenableAsyncCloseable
- Returns:
- a
Completable
that is notified when closing begins.
-