Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package gov.nist.javax.sip.stack.sctp;
  
  import java.util.Iterator;
 import java.util.Set;
 
 import  com.sun.nio.sctp.SctpChannel;
 import  com.sun.nio.sctp.SctpServerChannel;
 
SCTP Message Processor

Author(s):
Jeroen van Bemmel
 
 public final class SCTPMessageProcessor extends MessageProcessor {
 
 	private SctpServerChannel sctpServerChannel;
 	private Selector selector;
 	private SelectionKey key;
 	private boolean isRunningdoClose;
 	
 	private final Set<SCTPMessageChannelchannels 
Constructor, called via Class.newInstance() by SIPTransactionStack
 
 	public SCTPMessageProcessor() {
 		super"sctp" );
 	}
 
 	Selector getSelector() { return ; }
 	
 	SelectionKey registerChannelSCTPMessageChannel c, SctpChannel channel ) 
 		synchronized (this) {
 			return channel.register( .c );
 		}
 	}
 	
 	public MessageChannel createMessageChannel(HostPort targetHostPort)
 			throws IOException {		
 		return this.createMessageChanneltargetHostPort.getInetAddress(), targetHostPort.getPort() );
 	}
 
 	public MessageChannel createMessageChannel(InetAddress targetHostint port)
 			throws IOException {
 		
 		SCTPMessageChannel c = new SCTPMessageChannelthis
 				new InetSocketAddress(targetHost,port) );
 		.addc );
 		return c;
 	}
 
 	public int getDefaultTargetPort() {		
 		return 5060;	// same as UDP and TCP
 	}
 
 	public int getMaximumMessageSize() {
 		return .;
 	}
 
 		return ;
 	}
 
 	public boolean inUse() {
 		return ;
 	}
 
 	public boolean isSecure() {
 		return false;
 	}
 
 	public void run() {
 		try {
 			do {
 				int n = .select();
 				if (n>0) {
					while ( i.hasNext() ) {
						SelectionKey key = i.next();
						i.remove();
						if ( key.isReadable() ) {
							channel.readMessages();
else if (key.isAcceptable()) {
							SctpChannel ch = .accept();
							SCTPMessageChannel c = new SCTPMessageChannelthisch );
							.addc );
						}
					}
				}
				synchronized (this) {
					if () {
						return;
					}
				}				
while ( .isOpen() );
catch (IOException ioe) {
			try {
catch (IOException e) {
finally {
				this.stop();
			}
		}
	}
	public void start() throws IOException {
		this. = SctpServerChannel.open();		
		.configureBlocking( false );
		this. = Selector.open();
		// Start a daemon thread to handle reception
		this. = true;
        Thread thread = new Thread(this);
        thread.setDaemon(true);
        thread.setName("SCTPMessageProcessorThread");
        thread.setPriority(.);
        thread.start();
	}
	public void stop() {
		this. = false;
		this. = true;
		for ( SCTPMessageChannel c :  ) {
			c.closeNoRemove();	// avoids call to removeChannel -> ConcurrentModification
		}
		try {
catch (IOException e) {
finally {
			synchronized (this) {
			}
		}
	}
	void removeChannel(SCTPMessageChannel messageChannel) {
		.removemessageChannel );
	}
New to GrepCode? Check out our FAQ X