Package com.sun.nio.sctp

Examples of com.sun.nio.sctp.MessageInfo


                    nioData = ByteBuffer.allocate(dataLen);
                    data.getBytes(data.readerIndex(), nioData);
                    nioData.flip();
                }

                final MessageInfo mi = MessageInfo.createOutgoing(association(), null, packet.streamIdentifier());
                mi.payloadProtocolID(packet.protocolIdentifier());
                mi.streamNumber(packet.streamIdentifier());

                ch.send(nioData, mi);
                written ++;
                in.remove();
View Full Code Here


   */
  void readMessages() throws IOException {
    if (rxTime==0) {
      rxTime = System.currentTimeMillis();
    }
    MessageInfo info = channel.receive( rxBuffer, null, null );
    if (info==null) {
      // happens a lot, some sort of keep-alive?
      if ( getSIPStack().getStackLogger().isLoggingEnabled( ServerLogger.TRACE_DEBUG ) ) {
        getSIPStack().getStackLogger().logDebug( "SCTP read-event but no message" );
      }
      return;
    } else if (info.bytes()==-1) {
      getSIPStack().getStackLogger().logWarning( "SCTP peer closed, closing too..." );
      this.close();
      return;
    } else if ( !info.isComplete() ) {
      if ( getSIPStack().getStackLogger().isLoggingEnabled( ServerLogger.TRACE_DEBUG ) ) {
        getSIPStack().getStackLogger().logDebug( "SCTP incomplete message; bytes=" + info.bytes() );
      }
      return;
    } else {
      if ( getSIPStack().getStackLogger().isLoggingEnabled( ServerLogger.TRACE_DEBUG ) ) {
        getSIPStack().getStackLogger().logDebug( "SCTP message now complete; bytes=" + info.bytes() );
      }     
    }
   
    // Assume it is 1 full message, not multiple messages
    byte[] msg = new byte[ rxBuffer.position() ];
View Full Code Here

   */
  void readMessages() throws IOException {
    if (rxTime==0) {
      rxTime = System.currentTimeMillis();
    }
    MessageInfo info = channel.receive( rxBuffer, null, null );
    if (info==null) {
      // happens a lot, some sort of keep-alive?
      if ( getSIPStack().getStackLogger().isLoggingEnabled( ServerLogger.TRACE_DEBUG ) ) {
        getSIPStack().getStackLogger().logDebug( "SCTP read-event but no message" );
      }
      return;
    } else if (info.bytes()==-1) {
      getSIPStack().getStackLogger().logWarning( "SCTP peer closed, closing too..." );
      this.close();
      return;
    } else if ( !info.isComplete() ) {
      if ( getSIPStack().getStackLogger().isLoggingEnabled( ServerLogger.TRACE_DEBUG ) ) {
        getSIPStack().getStackLogger().logDebug( "SCTP incomplete message; bytes=" + info.bytes() );
      }
      return;
    } else {
      if ( getSIPStack().getStackLogger().isLoggingEnabled( ServerLogger.TRACE_DEBUG ) ) {
        getSIPStack().getStackLogger().logDebug( "SCTP message now complete; bytes=" + info.bytes() );
      }     
    }
   
    // Assume it is 1 full message, not multiple messages
    byte[] msg = new byte[ rxBuffer.position() ];
View Full Code Here

    }

    @Override
    public void run() {
      ByteBuffer buff = ByteBuffer.allocateDirect(BUFFER_SIZE);
      MessageInfo messageInfo = null;
      do {
        try {
          messageInfo = sc.receive(buff, System.out, null);
          if (messageInfo == null)
            break;
          buff.flip();
          if (buff.remaining() > 0) {
            int stream = messageInfo.streamNumber();
            if(stream==CONTROL_STREAM){
              nodeId = buff.getInt();
              channels.put(nodeId, this);
              Logger.info("Adding new channel " + nodeId);
            }
            else 
              dataReceived(buff, nodeId, messageInfo.streamNumber());
            Logger.info("Receive message at stream: " + messageInfo.streamNumber());
          }
          buff.clear();
        } catch (IOException e) {
          e.printStackTrace();
        }
View Full Code Here

     */
    void readMessages() throws IOException {
        if (rxTime==0) {
            rxTime = System.currentTimeMillis();
        }
        MessageInfo info = channel.receive( rxBuffer, null, null );
        if (info==null) {
            // happens a lot, some sort of keep-alive?
            if ( logger.isLoggingEnabled( LogWriter.TRACE_DEBUG ) ) {
                logger.logDebug( "SCTP read-event but no message" );
            }
            return;
        } else if (info.bytes()==-1) {
            logger.logWarning( "SCTP peer closed, closing too..." );
            this.close();
            return;
        } else if ( !info.isComplete() ) {
            if ( logger.isLoggingEnabled( LogWriter.TRACE_DEBUG ) ) {
                logger.logDebug( "SCTP incomplete message; bytes=" + info.bytes() );
            }
            return;
        } else {
            if ( logger.isLoggingEnabled( LogWriter.TRACE_DEBUG ) ) {
                logger.logDebug( "SCTP message now complete; bytes=" + info.bytes() );
            }
        }

        // Assume it is 1 full message, not multiple messages
        byte[] msg = new byte[ rxBuffer.position() ];
View Full Code Here

   */
  void readMessages() throws IOException {
    if (rxTime==0) {
      rxTime = System.currentTimeMillis();
    }
    MessageInfo info = channel.receive( rxBuffer, null, null );
    if (info==null) {
      // happens a lot, some sort of keep-alive?
      if ( logger.isLoggingEnabled( LogWriter.TRACE_DEBUG ) ) {
        logger.logDebug( "SCTP read-event but no message" );
      }
      return;
    } else if (info.bytes()==-1) {
      logger.logWarning( "SCTP peer closed, closing too..." );
      this.close();
      return;
    } else if ( !info.isComplete() ) {
      if ( logger.isLoggingEnabled( LogWriter.TRACE_DEBUG ) ) {
        logger.logDebug( "SCTP incomplete message; bytes=" + info.bytes() );
      }
      return;
    } else {
      if ( logger.isLoggingEnabled( LogWriter.TRACE_DEBUG ) ) {
        logger.logDebug( "SCTP message now complete; bytes=" + info.bytes() );
      }     
    }
   
    // Assume it is 1 full message, not multiple messages
    byte[] msg = new byte[ rxBuffer.position() ];
View Full Code Here

                channel.getConfig().getReceiveBufferSizePredictor();
        final int predictedRecvBufSize = predictor.nextReceiveBufferSize();

        boolean messageReceived = false;
        boolean failure = true;
        MessageInfo messageInfo = null;

        ByteBuffer bb = recvBufferPool.acquire(predictedRecvBufSize);
        try {
            messageInfo = channel.channel.receive(bb, null, notificationHandler);
            if (messageInfo != null) {
                messageReceived = true;
                if (!messageInfo.isUnordered()) {
                    failure = false;
                } else {
                    if (logger.isErrorEnabled()) {
                        logger.error("Received unordered SCTP Packet");
                    }
                    failure = true;
                }
            } else {
                messageReceived = false;
                failure = false;
            }
        } catch (ClosedChannelException e) {
            // Can happen, and does not need a user attention.
        } catch (Throwable t) {
            fireExceptionCaught(channel, t);
        }

        if (messageReceived) {
            bb.flip();

            final ChannelBufferFactory bufferFactory =
                    channel.getConfig().getBufferFactory();
            final int receivedBytes = bb.remaining();
            final ChannelBuffer buffer = bufferFactory.getBuffer(receivedBytes);
            buffer.setBytes(0, bb);
            buffer.writerIndex(receivedBytes);

            recvBufferPool.release(bb);

            // Update the predictor.
            predictor.previousReceiveBufferSize(receivedBytes);

            // Fire the event.
            fireMessageReceived(channel,
                    new SctpFrame(messageInfo, buffer),
                    messageInfo.address());
        } else {
            recvBufferPool.release(bb);
        }

        if (channel.channel.isBlocking() && !messageReceived || failure) {
View Full Code Here

            return buffer.limit() - initialPos;
        }

        @Override
        public long transferTo(SctpChannel ch) throws IOException {
            final MessageInfo messageInfo = MessageInfo.createOutgoing(ch.association(), null, streamNo);
            messageInfo.payloadProtocolID(protocolId);
            messageInfo.streamNumber(streamNo);
            ch.send(buffer, messageInfo);
            return writtenBytes();
        }
View Full Code Here

            return buffer.limit() - initialPos;
        }

        @Override
        public long transferTo(SctpChannel ch) throws IOException {
            final MessageInfo messageInfo = MessageInfo.createOutgoing(ch.association(), null, streamNo);
            messageInfo.payloadProtocolID(protocolId);
            messageInfo.streamNumber(streamNo);
            ch.send(buffer, messageInfo);
            return writtenBytes();
        }
View Full Code Here

   */
  void readMessages() throws IOException {
    if (rxTime==0) {
      rxTime = System.currentTimeMillis();
    }
    MessageInfo info = channel.receive( rxBuffer, null, null );
    if (info==null) {
      // happens a lot, some sort of keep-alive?
      if ( getSIPStack().getStackLogger().isLoggingEnabled( LogWriter.TRACE_DEBUG ) ) {
        getSIPStack().getStackLogger().logDebug( "SCTP read-event but no message" );
      }
      return;
    } else if (info.bytes()==-1) {
      getSIPStack().getStackLogger().logWarning( "SCTP peer closed, closing too..." );
      this.close();
      return;
    } else if ( !info.isComplete() ) {
      if ( getSIPStack().getStackLogger().isLoggingEnabled( LogWriter.TRACE_DEBUG ) ) {
        getSIPStack().getStackLogger().logDebug( "SCTP incomplete message; bytes=" + info.bytes() );
      }
      return;
    } else {
      if ( getSIPStack().getStackLogger().isLoggingEnabled( LogWriter.TRACE_DEBUG ) ) {
        getSIPStack().getStackLogger().logDebug( "SCTP message now complete; bytes=" + info.bytes() );
      }     
    }
   
    // Assume it is 1 full message, not multiple messages
    byte[] msg = new byte[ rxBuffer.position() ];
View Full Code Here

TOP

Related Classes of com.sun.nio.sctp.MessageInfo

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.