Package org.playframework.netty
Class HandlerSubscriber<T>
java.lang.Object
io.netty.channel.ChannelHandlerAdapter
io.netty.channel.ChannelInboundHandlerAdapter
io.netty.channel.ChannelDuplexHandler
org.playframework.netty.HandlerSubscriber<T>
- All Implemented Interfaces:
io.netty.channel.ChannelHandler
,io.netty.channel.ChannelInboundHandler
,io.netty.channel.ChannelOutboundHandler
,org.reactivestreams.Subscriber<T>
public class HandlerSubscriber<T>
extends io.netty.channel.ChannelDuplexHandler
implements org.reactivestreams.Subscriber<T>
Subscriber that publishes received messages to the handler pipeline.
-
Nested Class Summary
Nested ClassesNested classes/interfaces inherited from interface io.netty.channel.ChannelHandler
io.netty.channel.ChannelHandler.Sharable
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate io.netty.channel.ChannelHandlerContext
(package private) static final long
(package private) static final long
private final long
private final long
private final io.netty.util.concurrent.EventExecutor
private final AtomicBoolean
private io.netty.channel.ChannelFuture
private long
private HandlerSubscriber.State
private org.reactivestreams.Subscription
-
Constructor Summary
ConstructorsConstructorDescriptionHandlerSubscriber
(io.netty.util.concurrent.EventExecutor executor) Create a new handler subscriber with the default low and high watermarks.HandlerSubscriber
(io.netty.util.concurrent.EventExecutor executor, long demandLowWatermark, long demandHighWatermark) Create a new handler subscriber. -
Method Summary
Modifier and TypeMethodDescriptionprivate void
cancel()
void
channelActive
(io.netty.channel.ChannelHandlerContext ctx) void
channelInactive
(io.netty.channel.ChannelHandlerContext ctx) void
channelRegistered
(io.netty.channel.ChannelHandlerContext ctx) void
channelWritabilityChanged
(io.netty.channel.ChannelHandlerContext ctx) protected void
complete()
Override for custom completion handling.private void
doClose()
protected void
Override for custom error handling.void
exceptionCaught
(io.netty.channel.ChannelHandlerContext ctx, Throwable cause) void
handlerAdded
(io.netty.channel.ChannelHandlerContext ctx) void
handlerRemoved
(io.netty.channel.ChannelHandlerContext ctx) private void
private void
void
void
void
void
onSubscribe
(org.reactivestreams.Subscription subscription) private void
private void
verifyRegisteredWithRightExecutor
(io.netty.channel.ChannelHandlerContext ctx) Methods inherited from class io.netty.channel.ChannelDuplexHandler
bind, close, connect, deregister, disconnect, flush, read, write
Methods inherited from class io.netty.channel.ChannelInboundHandlerAdapter
channelRead, channelReadComplete, channelUnregistered, userEventTriggered
Methods inherited from class io.netty.channel.ChannelHandlerAdapter
ensureNotSharable, isSharable
-
Field Details
-
DEFAULT_LOW_WATERMARK
static final long DEFAULT_LOW_WATERMARK- See Also:
-
DEFAULT_HIGH_WATERMARK
static final long DEFAULT_HIGH_WATERMARK- See Also:
-
executor
private final io.netty.util.concurrent.EventExecutor executor -
demandLowWatermark
private final long demandLowWatermark -
demandHighWatermark
private final long demandHighWatermark -
hasSubscription
-
subscription
private volatile org.reactivestreams.Subscription subscription -
ctx
private volatile io.netty.channel.ChannelHandlerContext ctx -
state
-
outstandingDemand
private long outstandingDemand -
lastWriteFuture
private io.netty.channel.ChannelFuture lastWriteFuture
-
-
Constructor Details
-
HandlerSubscriber
public HandlerSubscriber(io.netty.util.concurrent.EventExecutor executor, long demandLowWatermark, long demandHighWatermark) Create a new handler subscriber. The supplied executor must be the same event loop as the event loop that this handler is eventually registered with, if not, an exception will be thrown when the handler is registered.- Parameters:
executor
- The executor to execute asynchronous events from the publisher on.demandLowWatermark
- The low watermark for demand. When demand drops below this, more will be requested.demandHighWatermark
- The high watermark for demand. This is the maximum that will be requested.
-
HandlerSubscriber
public HandlerSubscriber(io.netty.util.concurrent.EventExecutor executor) Create a new handler subscriber with the default low and high watermarks. The supplied executor must be the same event loop as the event loop that this handler is eventually registered with, if not, an exception will be thrown when the handler is registered.- Parameters:
executor
- The executor to execute asynchronous events from the publisher on.- See Also:
-
-
Method Details
-
error
Override for custom error handling. By default, it closes the channel.- Parameters:
error
- The error to handle.
-
complete
protected void complete()Override for custom completion handling. By default, it closes the channel. -
handlerAdded
- Specified by:
handlerAdded
in interfaceio.netty.channel.ChannelHandler
- Overrides:
handlerAdded
in classio.netty.channel.ChannelHandlerAdapter
- Throws:
Exception
-
channelRegistered
- Specified by:
channelRegistered
in interfaceio.netty.channel.ChannelInboundHandler
- Overrides:
channelRegistered
in classio.netty.channel.ChannelInboundHandlerAdapter
- Throws:
Exception
-
verifyRegisteredWithRightExecutor
private void verifyRegisteredWithRightExecutor(io.netty.channel.ChannelHandlerContext ctx) -
channelWritabilityChanged
- Specified by:
channelWritabilityChanged
in interfaceio.netty.channel.ChannelInboundHandler
- Overrides:
channelWritabilityChanged
in classio.netty.channel.ChannelInboundHandlerAdapter
- Throws:
Exception
-
channelActive
- Specified by:
channelActive
in interfaceio.netty.channel.ChannelInboundHandler
- Overrides:
channelActive
in classio.netty.channel.ChannelInboundHandlerAdapter
- Throws:
Exception
-
channelInactive
- Specified by:
channelInactive
in interfaceio.netty.channel.ChannelInboundHandler
- Overrides:
channelInactive
in classio.netty.channel.ChannelInboundHandlerAdapter
- Throws:
Exception
-
handlerRemoved
- Specified by:
handlerRemoved
in interfaceio.netty.channel.ChannelHandler
- Overrides:
handlerRemoved
in classio.netty.channel.ChannelHandlerAdapter
- Throws:
Exception
-
exceptionCaught
public void exceptionCaught(io.netty.channel.ChannelHandlerContext ctx, Throwable cause) throws Exception - Specified by:
exceptionCaught
in interfaceio.netty.channel.ChannelHandler
- Specified by:
exceptionCaught
in interfaceio.netty.channel.ChannelInboundHandler
- Overrides:
exceptionCaught
in classio.netty.channel.ChannelInboundHandlerAdapter
- Throws:
Exception
-
cancel
private void cancel() -
onSubscribe
public void onSubscribe(org.reactivestreams.Subscription subscription) - Specified by:
onSubscribe
in interfaceorg.reactivestreams.Subscriber<T>
-
provideSubscription
private void provideSubscription() -
maybeStart
private void maybeStart() -
onNext
- Specified by:
onNext
in interfaceorg.reactivestreams.Subscriber<T>
-
onError
- Specified by:
onError
in interfaceorg.reactivestreams.Subscriber<T>
-
onComplete
public void onComplete()- Specified by:
onComplete
in interfaceorg.reactivestreams.Subscriber<T>
-
doClose
private void doClose() -
maybeRequestMore
private void maybeRequestMore()
-