MessageToMessageCodec Class — netty Architecture
Architecture documentation for the MessageToMessageCodec class in MessageToMessageCodec.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD fc8cac05_d096_fb13_e83d_f0ceda4e3d25["MessageToMessageCodec"] 91fa86ba_df92_245d_54bd_7be8c2617137["MessageToMessageCodec.java"] fc8cac05_d096_fb13_e83d_f0ceda4e3d25 -->|defined in| 91fa86ba_df92_245d_54bd_7be8c2617137 ba89d6b4_2aed_f790_6dc1_94df775cba2e["MessageToMessageCodec()"] fc8cac05_d096_fb13_e83d_f0ceda4e3d25 -->|method| ba89d6b4_2aed_f790_6dc1_94df775cba2e 6f7dc8b8_536c_7150_c274_43985dd4f57a["channelRead()"] fc8cac05_d096_fb13_e83d_f0ceda4e3d25 -->|method| 6f7dc8b8_536c_7150_c274_43985dd4f57a a2ab41cd_b0f0_d35f_b3cf_d0429f58b618["channelReadComplete()"] fc8cac05_d096_fb13_e83d_f0ceda4e3d25 -->|method| a2ab41cd_b0f0_d35f_b3cf_d0429f58b618 2fce0cbe_472e_5249_b7e2_4af723fb9e08["write()"] fc8cac05_d096_fb13_e83d_f0ceda4e3d25 -->|method| 2fce0cbe_472e_5249_b7e2_4af723fb9e08 222b45d4_c478_33aa_c8f6_f4618dfbf544["acceptInboundMessage()"] fc8cac05_d096_fb13_e83d_f0ceda4e3d25 -->|method| 222b45d4_c478_33aa_c8f6_f4618dfbf544 e9d5288b_6a2c_8881_4518_57ab16ea8031["acceptOutboundMessage()"] fc8cac05_d096_fb13_e83d_f0ceda4e3d25 -->|method| e9d5288b_6a2c_8881_4518_57ab16ea8031 da12f684_f0df_e11f_c1ef_325f2f242826["encode()"] fc8cac05_d096_fb13_e83d_f0ceda4e3d25 -->|method| da12f684_f0df_e11f_c1ef_325f2f242826 e4310a59_ff63_7a18_41b5_261a83b66d5a["decode()"] fc8cac05_d096_fb13_e83d_f0ceda4e3d25 -->|method| e4310a59_ff63_7a18_41b5_261a83b66d5a
Relationship Graph
Source Code
codec-base/src/main/java/io/netty/handler/codec/MessageToMessageCodec.java lines 55–162
public abstract class MessageToMessageCodec<INBOUND_IN, OUTBOUND_IN> extends ChannelDuplexHandler {
private final MessageToMessageDecoder<Object> decoder = new MessageToMessageDecoder<Object>(Object.class) {
@Override
public boolean acceptInboundMessage(Object msg) throws Exception {
return MessageToMessageCodec.this.acceptInboundMessage(msg);
}
@Override
@SuppressWarnings("unchecked")
protected void decode(ChannelHandlerContext ctx, Object msg, List<Object> out) throws Exception {
MessageToMessageCodec.this.decode(ctx, (INBOUND_IN) msg, out);
}
@Override
public boolean isSharable() {
return MessageToMessageCodec.this.isSharable();
}
};
private final MessageToMessageEncoder<Object> encoder = new MessageToMessageEncoder<Object>(Object.class) {
@Override
public boolean acceptOutboundMessage(Object msg) throws Exception {
return MessageToMessageCodec.this.acceptOutboundMessage(msg);
}
@Override
@SuppressWarnings("unchecked")
protected void encode(ChannelHandlerContext ctx, Object msg, List<Object> out) throws Exception {
MessageToMessageCodec.this.encode(ctx, (OUTBOUND_IN) msg, out);
}
@Override
public boolean isSharable() {
return MessageToMessageCodec.this.isSharable();
}
};
private final TypeParameterMatcher inboundMsgMatcher;
private final TypeParameterMatcher outboundMsgMatcher;
/**
* Create a new instance which will try to detect the types to decode and encode out of the type parameter
* of the class.
*/
protected MessageToMessageCodec() {
inboundMsgMatcher = TypeParameterMatcher.find(this, MessageToMessageCodec.class, "INBOUND_IN");
outboundMsgMatcher = TypeParameterMatcher.find(this, MessageToMessageCodec.class, "OUTBOUND_IN");
}
/**
* Create a new instance.
*
* @param inboundMessageType The type of messages to decode
* @param outboundMessageType The type of messages to encode
*/
protected MessageToMessageCodec(
Class<? extends INBOUND_IN> inboundMessageType, Class<? extends OUTBOUND_IN> outboundMessageType) {
inboundMsgMatcher = TypeParameterMatcher.get(inboundMessageType);
outboundMsgMatcher = TypeParameterMatcher.get(outboundMessageType);
}
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
decoder.channelRead(ctx, msg);
}
@Override
public void channelReadComplete(ChannelHandlerContext ctx) throws Exception {
decoder.channelReadComplete(ctx);
}
@Override
public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception {
encoder.write(ctx, msg, promise);
}
/**
* Returns {@code true} if and only if the specified message can be decoded by this codec.
*
Source
Frequently Asked Questions
What is the MessageToMessageCodec class?
MessageToMessageCodec is a class in the netty codebase, defined in codec-base/src/main/java/io/netty/handler/codec/MessageToMessageCodec.java.
Where is MessageToMessageCodec defined?
MessageToMessageCodec is defined in codec-base/src/main/java/io/netty/handler/codec/MessageToMessageCodec.java at line 55.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free