SctpMessageCompletionHandler Class — netty Architecture
Architecture documentation for the SctpMessageCompletionHandler class in SctpMessageCompletionHandler.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 28215e1f_7aab_a28b_0e47_cb1b781b34f0["SctpMessageCompletionHandler"] f83d3bc9_b5fc_7268_b415_0688176961e1["SctpMessageCompletionHandler.java"] 28215e1f_7aab_a28b_0e47_cb1b781b34f0 -->|defined in| f83d3bc9_b5fc_7268_b415_0688176961e1 eb0876e6_7b3a_99cc_928f_84f9cb0df8e4["SctpMessageCompletionHandler()"] 28215e1f_7aab_a28b_0e47_cb1b781b34f0 -->|method| eb0876e6_7b3a_99cc_928f_84f9cb0df8e4 369c6f86_6367_a22a_3265_e670f55943da["decode()"] 28215e1f_7aab_a28b_0e47_cb1b781b34f0 -->|method| 369c6f86_6367_a22a_3265_e670f55943da 6abdbd83_3798_c30e_0247_9c56b30fecf0["handlerRemoved()"] 28215e1f_7aab_a28b_0e47_cb1b781b34f0 -->|method| 6abdbd83_3798_c30e_0247_9c56b30fecf0
Relationship Graph
Source Code
transport-sctp/src/main/java/io/netty/handler/codec/sctp/SctpMessageCompletionHandler.java lines 35–84
public class SctpMessageCompletionHandler extends MessageToMessageDecoder<SctpMessage> {
private final IntObjectMap<ByteBuf> fragments = new IntObjectHashMap<ByteBuf>();
public SctpMessageCompletionHandler() {
super(SctpMessage.class);
}
@Override
protected void decode(ChannelHandlerContext ctx, SctpMessage msg, List<Object> out) throws Exception {
final ByteBuf byteBuf = msg.content();
final int protocolIdentifier = msg.protocolIdentifier();
final int streamIdentifier = msg.streamIdentifier();
final boolean isComplete = msg.isComplete();
final boolean isUnordered = msg.isUnordered();
ByteBuf frag = fragments.remove(streamIdentifier);
if (frag == null) {
frag = Unpooled.EMPTY_BUFFER;
}
if (isComplete && !frag.isReadable()) {
//data chunk is not fragmented
out.add(msg);
} else if (!isComplete && frag.isReadable()) {
//more message to complete
fragments.put(streamIdentifier, Unpooled.wrappedBuffer(frag, byteBuf));
} else if (isComplete && frag.isReadable()) {
//last message to complete
SctpMessage assembledMsg = new SctpMessage(
protocolIdentifier,
streamIdentifier,
isUnordered,
Unpooled.wrappedBuffer(frag, byteBuf));
out.add(assembledMsg);
} else {
//first incomplete message
fragments.put(streamIdentifier, byteBuf);
}
byteBuf.retain();
}
@Override
public void handlerRemoved(ChannelHandlerContext ctx) throws Exception {
for (ByteBuf buffer: fragments.values()) {
buffer.release();
}
fragments.clear();
super.handlerRemoved(ctx);
}
}
Defined In
Source
Frequently Asked Questions
What is the SctpMessageCompletionHandler class?
SctpMessageCompletionHandler is a class in the netty codebase, defined in transport-sctp/src/main/java/io/netty/handler/codec/sctp/SctpMessageCompletionHandler.java.
Where is SctpMessageCompletionHandler defined?
SctpMessageCompletionHandler is defined in transport-sctp/src/main/java/io/netty/handler/codec/sctp/SctpMessageCompletionHandler.java at line 35.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free