Class NonChunkedHttpMessageHandler
- java.lang.Object
-
- com.couchbase.client.core.deps.io.netty.channel.ChannelHandlerAdapter
-
- com.couchbase.client.core.deps.io.netty.channel.ChannelInboundHandlerAdapter
-
- com.couchbase.client.core.deps.io.netty.channel.ChannelDuplexHandler
-
- com.couchbase.client.core.io.netty.NonChunkedHttpMessageHandler
-
- All Implemented Interfaces:
com.couchbase.client.core.deps.io.netty.channel.ChannelHandler
,com.couchbase.client.core.deps.io.netty.channel.ChannelInboundHandler
,com.couchbase.client.core.deps.io.netty.channel.ChannelOutboundHandler
- Direct Known Subclasses:
NonChunkedEventingMessageHandler
@Sharable public abstract class NonChunkedHttpMessageHandler extends com.couchbase.client.core.deps.io.netty.channel.ChannelDuplexHandler
This message handler can be considered the opposite of theChunkedMessageHandler
.This generic implementation makes sure that when it lives in the pipeline it also pulls in the http aggregator and sends full http requests / receives full http responses.
You usually want to add this handler for non-perf critical messages like creating indexes and similar, so their encoder and decoder implementations are considerably simpler than having to deal with chunking and a streaming parser.
- Since:
- 2.0.0
-
-
Field Summary
Fields Modifier and Type Field Description static String
IDENTIFIER
-
Constructor Summary
Constructors Modifier Constructor Description protected
NonChunkedHttpMessageHandler(BaseEndpoint endpoint, ServiceType serviceType)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
channelActive(com.couchbase.client.core.deps.io.netty.channel.ChannelHandlerContext ctx)
When this channel is marked active it also needs to propagate that to the aggregator.void
channelInactive(com.couchbase.client.core.deps.io.netty.channel.ChannelHandlerContext ctx)
void
channelRead(com.couchbase.client.core.deps.io.netty.channel.ChannelHandlerContext ctx, Object msg)
Parses the full http response and sends it to decode into the request.protected Exception
failRequestWith(com.couchbase.client.core.deps.io.netty.handler.codec.http.HttpResponseStatus status, String content, NonChunkedHttpRequest<Response> request)
To be implemented by children, should return the proper service exception type for each.void
handlerAdded(com.couchbase.client.core.deps.io.netty.channel.ChannelHandlerContext ctx)
When the non-chunked handler is added, it also needs to add the http aggregator.void
handlerRemoved(com.couchbase.client.core.deps.io.netty.channel.ChannelHandlerContext ctx)
When the non-chunked handler is removed, it also needs to remove its http aggregator.void
write(com.couchbase.client.core.deps.io.netty.channel.ChannelHandlerContext ctx, Object msg, com.couchbase.client.core.deps.io.netty.channel.ChannelPromise promise)
Writes a given request and encodes it.-
Methods inherited from class com.couchbase.client.core.deps.io.netty.channel.ChannelDuplexHandler
bind, close, connect, deregister, disconnect, flush, read
-
Methods inherited from class com.couchbase.client.core.deps.io.netty.channel.ChannelInboundHandlerAdapter
channelReadComplete, channelRegistered, channelUnregistered, channelWritabilityChanged, exceptionCaught, userEventTriggered
-
-
-
-
Field Detail
-
IDENTIFIER
public static final String IDENTIFIER
-
-
Constructor Detail
-
NonChunkedHttpMessageHandler
protected NonChunkedHttpMessageHandler(BaseEndpoint endpoint, ServiceType serviceType)
-
-
Method Detail
-
failRequestWith
protected Exception failRequestWith(com.couchbase.client.core.deps.io.netty.handler.codec.http.HttpResponseStatus status, String content, NonChunkedHttpRequest<Response> request)
To be implemented by children, should return the proper service exception type for each.- Parameters:
content
- the raw full content body of the response if not successful.- Returns:
- the exception with which the request will be failed.
-
write
public void write(com.couchbase.client.core.deps.io.netty.channel.ChannelHandlerContext ctx, Object msg, com.couchbase.client.core.deps.io.netty.channel.ChannelPromise promise)
Writes a given request and encodes it.- Specified by:
write
in interfacecom.couchbase.client.core.deps.io.netty.channel.ChannelOutboundHandler
- Overrides:
write
in classcom.couchbase.client.core.deps.io.netty.channel.ChannelDuplexHandler
- Parameters:
ctx
- the channel handler context.msg
- the msg to write.promise
- the promise that will be passed along.
-
channelActive
public void channelActive(com.couchbase.client.core.deps.io.netty.channel.ChannelHandlerContext ctx) throws Exception
When this channel is marked active it also needs to propagate that to the aggregator.- Specified by:
channelActive
in interfacecom.couchbase.client.core.deps.io.netty.channel.ChannelInboundHandler
- Overrides:
channelActive
in classcom.couchbase.client.core.deps.io.netty.channel.ChannelInboundHandlerAdapter
- Parameters:
ctx
- the channel handler context.- Throws:
Exception
-
channelRead
public void channelRead(com.couchbase.client.core.deps.io.netty.channel.ChannelHandlerContext ctx, Object msg)
Parses the full http response and sends it to decode into the request.- Specified by:
channelRead
in interfacecom.couchbase.client.core.deps.io.netty.channel.ChannelInboundHandler
- Overrides:
channelRead
in classcom.couchbase.client.core.deps.io.netty.channel.ChannelInboundHandlerAdapter
- Parameters:
ctx
- the channel handler context.msg
- the FullHttpResponse from the server.
-
handlerAdded
public void handlerAdded(com.couchbase.client.core.deps.io.netty.channel.ChannelHandlerContext ctx)
When the non-chunked handler is added, it also needs to add the http aggregator.- Specified by:
handlerAdded
in interfacecom.couchbase.client.core.deps.io.netty.channel.ChannelHandler
- Overrides:
handlerAdded
in classcom.couchbase.client.core.deps.io.netty.channel.ChannelHandlerAdapter
- Parameters:
ctx
- the channel handler context.
-
channelInactive
public void channelInactive(com.couchbase.client.core.deps.io.netty.channel.ChannelHandlerContext ctx)
- Specified by:
channelInactive
in interfacecom.couchbase.client.core.deps.io.netty.channel.ChannelInboundHandler
- Overrides:
channelInactive
in classcom.couchbase.client.core.deps.io.netty.channel.ChannelInboundHandlerAdapter
-
handlerRemoved
public void handlerRemoved(com.couchbase.client.core.deps.io.netty.channel.ChannelHandlerContext ctx)
When the non-chunked handler is removed, it also needs to remove its http aggregator.- Specified by:
handlerRemoved
in interfacecom.couchbase.client.core.deps.io.netty.channel.ChannelHandler
- Overrides:
handlerRemoved
in classcom.couchbase.client.core.deps.io.netty.channel.ChannelHandlerAdapter
- Parameters:
ctx
- the channel handler context.
-
-