1 5 package com.ubermq.jms.server; 6 7 import java.io.IOException ; 8 import java.net.*; 9 import java.nio.channels.Selector ; 10 11 import com.ubermq.jms.common.MessageConstants; 12 import com.ubermq.kernel.*; 13 import com.ubermq.kernel.IConnectionInfo.ConnectionAcceptor; 14 import com.ubermq.util.Utility; 15 16 17 21 public class DefaultProtocol 22 implements Protocol 23 { 24 private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(DefaultProtocol.class); 25 26 public static InetSocketAddress getBindAddress(String bindTo, int port) 27 { 28 InetSocketAddress bindAddr = null; 29 try 30 { 31 if (bindTo == null) 32 bindAddr = new InetSocketAddress(InetAddress.getLocalHost(), port); 33 else if (bindTo != null) 34 bindAddr = new InetSocketAddress(InetAddress.getByName(bindTo), port); 35 } 36 catch (UnknownHostException e) 37 { 38 log.error("Unable to resolve bind address", e); 39 throw new IllegalStateException (e.getMessage()); 40 } 41 42 return bindAddr; 43 } 44 45 public static InetSocketAddress getConfiguredBindAddress() 46 { 47 return DefaultProtocol.getBindAddress(Configurator.getProperty(ConfigConstants.SERVER_BIND_ADDRESS), 48 Integer.valueOf(Configurator.getProperty(ConfigConstants.SERVER_PORT, 49 String.valueOf(MessageConstants.DEFAULT_PORT))).intValue()); 50 } 51 52 private IDatagramFactory factory; 53 private InetSocketAddress bindAddress; 54 private AcceptThread acceptThread; 55 56 public DefaultProtocol(IDatagramFactory factory, InetSocketAddress bindAddress) 57 { 58 this.factory = factory; 59 this.bindAddress = bindAddress; 60 } 61 62 public boolean isEnabled() 63 { 64 return true; 65 } 66 67 70 public InetSocketAddress getBindAddress() 71 { 72 return bindAddress; 73 } 74 75 public void start(IMessageProcessor datagramProcessor, 76 IConnectionInfo.ConnectionAcceptor a) 77 throws java.io.IOException 78 { 79 try 80 { 81 acceptThread = new AcceptThread(Selector.open(), 82 a, 83 bindAddress, 84 factory, 85 datagramProcessor); 86 acceptThread.start(); 87 } 88 catch(NumberFormatException nfe) 89 { 90 } 93 } 94 95 public void stop() 96 { 97 acceptThread.interrupt(); 98 try 99 { 100 acceptThread.join(); 101 } 102 catch (InterruptedException e) {} 103 } 104 105 public String toString() 106 { 107 return "UberMQ " + getServiceURI().toString(); 108 } 109 110 116 public URI getServiceURI() 117 { 118 return getServiceURI("ubermq", MessageConstants.DEFAULT_PORT); 119 } 120 121 protected URI getServiceURI(String scheme, int defaultPort) 122 { 123 if (bindAddress.getPort() == defaultPort) 124 return URI.create(scheme + "://" + bindAddress.getHostName()); 125 else 126 return URI.create(scheme + "://" + bindAddress.getHostName() + ":" + bindAddress.getPort()); 127 } 128 } | Popular Tags |