@Override protected Object encode(ChannelHandlerContext ctx, Channel channel, Object msg) throws Exception { if (!(msg instanceof ChannelBuffer)) { return msg; } else { SctpChannel sctpChannel = (SctpChannel) channel; final int streamIdentifier = sctpWriteStreamSelector.streamIdentifier(sctpChannel, msg); return new SctpFrame(protocolIdentifier, streamIdentifier, (ChannelBuffer) msg); } } }
final boolean complete = sctpFrame.getMessageInfo().isComplete(); if (complete) { if (cumulation == null) { return sctpFrame.getPayloadBuffer(); } else { final ChannelBuffer extractedFrame = ChannelBuffers.wrappedBuffer(cumulation, sctpFrame.getPayloadBuffer()); cumulation = null; return extractedFrame; cumulation = sctpFrame.getPayloadBuffer(); } else { cumulation = ChannelBuffers.wrappedBuffer(cumulation, sctpFrame.getPayloadBuffer());
private SendBuffer acquire(SctpFrame message) { final ChannelBuffer src = message.getPayloadBuffer(); final int streamNo = message.getStreamIdentifier(); final int protocolId = message.getProtocolIdentifier();
@Override public String toString() { return new StringBuilder(). append("SctpFrame{"). append("streamIdentifier="). append(streamIdentifier). append(", protocolIdentifier="). append(protocolIdentifier). append(", payloadBuffer="). append(ChannelBuffers.hexDump(getPayloadBuffer())). append('}').toString(); } }
private int getMessageSize(MessageEvent e) { Object m = e.getMessage(); if (m instanceof SctpFrame) { return ((SctpFrame) m).getPayloadBuffer().readableBytes(); } return 0; } }
/** * After connection is initialized, start the echo from client */ @Override public void channelConnected(ChannelHandlerContext ctx, ChannelStateEvent stateEvent) { stateEvent.getChannel().write(new SctpFrame(0, 0, ChannelBuffers.wrappedBuffer("SCTP ECHO".getBytes()))); }
new SctpFrame(messageInfo, buffer), messageInfo.address()); } else {