public void sendMessage(ByteBuffer bytes) throws IOException { if (logger.isDebugEnabled()) { logger.debug("About to send a byte buffer of size [{}] over the SCTP", bytes.array().length); } PayloadData payloadData = new PayloadData(bytes.array().length, bytes.array(), true, false, payloadProtocolId, streamNumber); try { this.clientAssociation.send(payloadData); } catch (Exception e) { logger.error("Failed sending byte buffer over SCTP", e); } if (logger.isDebugEnabled()) { logger.debug("Sent a byte buffer of size [{}] over SCTP", bytes.array().length); } }
@Override public void onPayload(Association association, PayloadData payloadData) { // set payload and stream number values; payloadProtocolId = payloadData.getPayloadProtocolId(); streamNumber = payloadData.getStreamNumber(); byte[] data = new byte[payloadData.getDataLength()]; System.arraycopy(payloadData.getData(), 0, data, 0, payloadData.getDataLength()); logger.debug("SCTP Server received a message of length: [{}] ", data.length); try { // make a message out of data and process it getParent().onMessageReceived(ByteBuffer.wrap(data)); } catch (AvpDataException e) { logger.debug("Garbage was received. Discarding."); // storage.clear(); getParent().onAvpDataException(e); } }
@Override public void send(PayloadData payloadData) throws Exception { if (logger.isDebugEnabled()) { logger.debug(String.format("Tx : Ass=%s %s", this.getName(), payloadData)); } NettySctpChannelInboundHandlerAdapter handler = checkSocketIsOpen(); final ByteBuf byteBuf = payloadData.getByteBuf(); if (this.ipChannelType == IpChannelType.SCTP) { SctpMessage sctpMessage = new SctpMessage(payloadData.getPayloadProtocolId(), payloadData.getStreamNumber(), payloadData.isUnordered(), byteBuf); handler.writeAndFlush(sctpMessage); } else { handler.writeAndFlush(byteBuf); } }
@Override public void onPayload(Association association, PayloadData payloadData) { byte[] data = new byte[payloadData.getDataLength()]; System.arraycopy(payloadData.getData(), 0, data, 0, payloadData.getDataLength()); logger.debug("SCTP Client received data of length [{}]", data.length); try { // make a message out of data and process it getParent().onMessageReceived(ByteBuffer.wrap(data)); } catch (AvpDataException e) { logger.debug("Garbage was received. Discarding."); // storage.clear(); getParent().onAvpDataException(e); } }
txBuffer.put(payloadData.getData()); int seqControl = payloadData.getStreamNumber(); msgInfo.payloadProtocolID(payloadData.getPayloadProtocolId()); msgInfo.complete(payloadData.isComplete()); msgInfo.unordered(payloadData.isUnordered());
@Override public void onPayload(Association association, org.mobicents.protocols.api.PayloadData payloadData) { try { M3UAMessage m3UAMessage; if (this.m3UAManagementImpl.sctpLibNettySupport) { ByteBuf byteBuf = payloadData.getByteBuf(); processPayload(association.getIpChannelType(), byteBuf); } else { byte[] m3uadata = payloadData.getData(); ByteBuf byteBuf = Unpooled.wrappedBuffer(m3uadata); processPayload(association.getIpChannelType(), byteBuf); } } catch (Throwable e) { logger.error( String.format("Error while trying to process PayloadData from SCTP layer. payloadData=%s", payloadData), e); } }
@Override public void inValidStreamId(org.mobicents.protocols.api.PayloadData payloadData) { logger.error(String .format("Tx : PayloadData with streamNumber=%d which is greater than or equal to maxSequenceNumber=%d. Droping PayloadData=%s", payloadData.getStreamNumber(), this.maxOutboundStreams, payloadData)); }
@Override public void onPayload(Association association, org.mobicents.protocols.api.PayloadData payloadData) { try { M3UAMessage m3UAMessage; if (this.m3UAManagementImpl.sctpLibNettySupport) { ByteBuf byteBuf = payloadData.getByteBuf(); processPayload(association.getIpChannelType(), byteBuf); } else { byte[] m3uadata = payloadData.getData(); ByteBuf byteBuf = Unpooled.wrappedBuffer(m3uadata); processPayload(association.getIpChannelType(), byteBuf); } } catch (Throwable e) { logger.error( String.format("Error while trying to process PayloadData from SCTP layer. payloadData=%s", payloadData), e); } }
@Override public void inValidStreamId(org.mobicents.protocols.api.PayloadData payloadData) { logger.error(String .format("Tx : PayloadData with streamNumber=%d which is greater than or equal to maxSequenceNumber=%d. Droping PayloadData=%s", payloadData.getStreamNumber(), this.maxOutboundStreams, payloadData)); }
public void sendMessage(ByteBuffer bytes) throws IOException { if (logger.isDebugEnabled()) { logger.debug("About to send a byte buffer of size [{}] over the SCTP", bytes.array().length); } PayloadData payloadData = new PayloadData(bytes.array().length, bytes.array(), true, false, payloadProtocolId, streamNumber); try { this.remoteClientAssociation.send(payloadData); } catch (Exception e) { logger.error("Failed sending byte buffer over SCTP", e); } if (logger.isDebugEnabled()) { logger.debug("Sent a byte buffer of size [{}] over SCTP", bytes.array().length); } }
.getStreamNumber()]); try { executorService.execute(worker);
private PayloadData doReadTcp() throws IOException { rxBuffer.clear(); int len = this.socketChannelTcp.read(rxBuffer); if (len == -1) { logger.warn(String.format("Rx -1 while trying to read from underlying socket for Association=%s ", this.name)); this.close(); this.scheduleConnect(); return null; } rxBuffer.flip(); byte[] data = new byte[len]; rxBuffer.get(data); rxBuffer.clear(); PayloadData payload = new PayloadData(len, data, true, false, 0, 0); return payload; }
@Override public void channelRead(ChannelHandlerContext ctx, Object msg) { // try { PayloadData payload; if (this.association.getIpChannelType() == IpChannelType.SCTP) { SctpMessage sctpMessage = (SctpMessage) msg; ByteBuf byteBuf = sctpMessage.content(); payload = new PayloadData(byteBuf.readableBytes(), byteBuf, sctpMessage.isComplete(), sctpMessage.isUnordered(), sctpMessage.protocolIdentifier(), sctpMessage.streamIdentifier()); } else { ByteBuf byteBuf = (ByteBuf) msg; payload = new PayloadData(byteBuf.readableBytes(), byteBuf, true, false, 0, 0); } if (logger.isDebugEnabled()) { logger.debug(String.format("Rx : Ass=%s %s", this.association.getName(), payload)); } this.association.read(payload); // } finally { // ReferenceCountUtil.release(msg); // } }
private PayloadData doReadSctp() throws IOException { rxBuffer.clear(); MessageInfo messageInfo = this.socketChannelSctp.receive(rxBuffer, this, this.associationHandler); if (messageInfo == null) { if (logger.isDebugEnabled()) { logger.debug(String.format(" messageInfo is null for Association=%s", this.name)); } return null; } int len = messageInfo.bytes(); if (len == -1) { logger.error(String.format("Rx -1 while trying to read from underlying socket for Association=%s ", this.name)); this.close(); this.scheduleConnect(); return null; } rxBuffer.flip(); byte[] data = new byte[len]; rxBuffer.get(data); rxBuffer.clear(); PayloadData payload = new PayloadData(len, data, messageInfo.isComplete(), messageInfo.isUnordered(), messageInfo.payloadProtocolID(), messageInfo.streamNumber()); return payload; }
case MessageClass.MANAGEMENT: case MessageClass.ROUTING_KEY_MANAGEMENT: payloadData = new org.mobicents.protocols.api.PayloadData(byteBuf.readableBytes(), byteBuf, true, true, SCTP_PAYLOAD_PROT_ID_M3UA, 0); break; PayloadData payload = (PayloadData) message; int seqControl = payload.getData().getSLS(); payloadData = new org.mobicents.protocols.api.PayloadData(byteBuf.readableBytes(), byteBuf, true, false, SCTP_PAYLOAD_PROT_ID_M3UA, this.slsTable[seqControl]); break; default: payloadData = new org.mobicents.protocols.api.PayloadData(byteBuf.readableBytes(), byteBuf, true, true, SCTP_PAYLOAD_PROT_ID_M3UA, 0); break; case MessageClass.MANAGEMENT: case MessageClass.ROUTING_KEY_MANAGEMENT: payloadData = new org.mobicents.protocols.api.PayloadData(byteBuf.readableBytes(), bf, true, true, SCTP_PAYLOAD_PROT_ID_M3UA, 0); break; PayloadData payload = (PayloadData) message; int seqControl = payload.getData().getSLS(); payloadData = new org.mobicents.protocols.api.PayloadData(byteBuf.readableBytes(), bf, true, false, SCTP_PAYLOAD_PROT_ID_M3UA, this.slsTable[seqControl]); break; default: payloadData = new org.mobicents.protocols.api.PayloadData(byteBuf.readableBytes(), bf, true, true,
case MessageClass.MANAGEMENT: case MessageClass.ROUTING_KEY_MANAGEMENT: payloadData = new org.mobicents.protocols.api.PayloadData(byteBuf.readableBytes(), byteBuf, true, true, SCTP_PAYLOAD_PROT_ID_M3UA, 0); break; PayloadData payload = (PayloadData) message; int seqControl = payload.getData().getSLS(); payloadData = new org.mobicents.protocols.api.PayloadData(byteBuf.readableBytes(), byteBuf, true, false, SCTP_PAYLOAD_PROT_ID_M3UA, this.slsTable[seqControl]); break; default: payloadData = new org.mobicents.protocols.api.PayloadData(byteBuf.readableBytes(), byteBuf, true, true, SCTP_PAYLOAD_PROT_ID_M3UA, 0); break; case MessageClass.MANAGEMENT: case MessageClass.ROUTING_KEY_MANAGEMENT: payloadData = new org.mobicents.protocols.api.PayloadData(byteBuf.readableBytes(), bf, true, true, SCTP_PAYLOAD_PROT_ID_M3UA, 0); break; PayloadData payload = (PayloadData) message; int seqControl = payload.getData().getSLS(); payloadData = new org.mobicents.protocols.api.PayloadData(byteBuf.readableBytes(), bf, true, false, SCTP_PAYLOAD_PROT_ID_M3UA, this.slsTable[seqControl]); break; default: payloadData = new org.mobicents.protocols.api.PayloadData(byteBuf.readableBytes(), bf, true, true,