BinaryMemcacheClientCodec Class — netty Architecture
Architecture documentation for the BinaryMemcacheClientCodec class in BinaryMemcacheClientCodec.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 8822a61c_7414_4931_033f_f9b3c73243ba["BinaryMemcacheClientCodec"] 372235a6_ca59_e557_f32c_eedb39b34c60["BinaryMemcacheClientCodec.java"] 8822a61c_7414_4931_033f_f9b3c73243ba -->|defined in| 372235a6_ca59_e557_f32c_eedb39b34c60 9d2658dd_c6cf_2c84_2634_82f3469b3583["BinaryMemcacheClientCodec()"] 8822a61c_7414_4931_033f_f9b3c73243ba -->|method| 9d2658dd_c6cf_2c84_2634_82f3469b3583
Relationship Graph
Source Code
codec-memcache/src/main/java/io/netty/handler/codec/memcache/binary/BinaryMemcacheClientCodec.java lines 39–121
@UnstableApi
public final class BinaryMemcacheClientCodec extends
CombinedChannelDuplexHandler<BinaryMemcacheResponseDecoder, BinaryMemcacheRequestEncoder> {
private final boolean failOnMissingResponse;
private final AtomicLong requestResponseCounter = new AtomicLong();
/**
* Create a new {@link BinaryMemcacheClientCodec} with the default settings applied.
*/
public BinaryMemcacheClientCodec() {
this(AbstractBinaryMemcacheDecoder.DEFAULT_MAX_CHUNK_SIZE);
}
/**
* Create a new {@link BinaryMemcacheClientCodec} and set a custom chunk size.
*
* @param decodeChunkSize the maximum chunk size.
*/
public BinaryMemcacheClientCodec(int decodeChunkSize) {
this(decodeChunkSize, false);
}
/**
* Create a new {@link BinaryMemcacheClientCodec} with custom settings.
*
* @param decodeChunkSize the maximum chunk size.
* @param failOnMissingResponse report if after close there are outstanding requests.
*/
public BinaryMemcacheClientCodec(int decodeChunkSize, boolean failOnMissingResponse) {
this.failOnMissingResponse = failOnMissingResponse;
init(new Decoder(decodeChunkSize), new Encoder());
}
private final class Encoder extends BinaryMemcacheRequestEncoder {
@Override
protected void encode(ChannelHandlerContext ctx, Object msg, List<Object> out) throws Exception {
super.encode(ctx, msg, out);
if (failOnMissingResponse && msg instanceof LastMemcacheContent) {
requestResponseCounter.incrementAndGet();
}
}
}
private final class Decoder extends BinaryMemcacheResponseDecoder {
Decoder(int chunkSize) {
super(chunkSize);
}
@Override
protected void decode(ChannelHandlerContext ctx, ByteBuf in, List<Object> out) throws Exception {
int oldSize = out.size();
super.decode(ctx, in, out);
if (failOnMissingResponse) {
final int size = out.size();
for (int i = oldSize; i < size; i ++) {
Object msg = out.get(i);
if (msg instanceof LastMemcacheContent) {
requestResponseCounter.decrementAndGet();
}
}
}
}
@Override
public void channelInactive(ChannelHandlerContext ctx) throws Exception {
super.channelInactive(ctx);
if (failOnMissingResponse) {
long missingResponses = requestResponseCounter.get();
if (missingResponses > 0) {
ctx.fireExceptionCaught(new PrematureChannelClosureException(
"channel gone inactive with " + missingResponses +
" missing response(s)"));
}
}
}
Defined In
Source
Frequently Asked Questions
What is the BinaryMemcacheClientCodec class?
BinaryMemcacheClientCodec is a class in the netty codebase, defined in codec-memcache/src/main/java/io/netty/handler/codec/memcache/binary/BinaryMemcacheClientCodec.java.
Where is BinaryMemcacheClientCodec defined?
BinaryMemcacheClientCodec is defined in codec-memcache/src/main/java/io/netty/handler/codec/memcache/binary/BinaryMemcacheClientCodec.java at line 39.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free