plugins/org.symbian.tools.tmw.debug/src/org/symbian/tools/tmw/debug/internal/launch/PortPolicy.java
changeset 484 f5df819c1852
parent 471 06589bf52fa7
equal deleted inserted replaced
483:109da596fa9d 484:f5df819c1852
    22 import java.net.ServerSocket;
    22 import java.net.ServerSocket;
    23 
    23 
    24 import org.symbian.tools.tmw.debug.internal.Activator;
    24 import org.symbian.tools.tmw.debug.internal.Activator;
    25 
    25 
    26 public abstract class PortPolicy {
    26 public abstract class PortPolicy {
    27     //	private static class ReuseSamePort extends PortPolicy {
    27     private static class NewPortEachTime extends PortPolicy {
    28     //		private int port = -1;
    28         @Override
    29     //
    29         protected int getPort() {
    30     //		@Override
    30             return getOpenPort();
    31     //		protected int getPort() {
    31         }
    32     //			if (port < 0) {
    32     }
    33     //				port = getOpenPort();
       
    34     //			}
       
    35     //			return port;
       
    36     //		}
       
    37     //	}
       
    38 
    33 
    39 	private static class NewPortEachTime extends PortPolicy {
    34     public static final PortPolicy INSTANCE;
    40 		@Override
    35     static {
    41 		protected int getPort() {
    36         INSTANCE = new NewPortEachTime();
    42 			return getOpenPort();
    37     }
    43 		}
       
    44 	}
       
    45 
    38 
    46 	public static final PortPolicy INSTANCE;
    39     public static synchronized int getPortNumber() {
    47 	static {
    40         return INSTANCE.getPort();
    48         //		if (CoreUtil.isMac()) {
    41     }
    49 			INSTANCE = new NewPortEachTime();
       
    50         //		} else {
       
    51         //			INSTANCE = new ReuseSamePort();
       
    52         //		}
       
    53 	}
       
    54 
    42 
    55 	public static synchronized int getPortNumber() {
    43     public int getOpenPort() {
    56 		return INSTANCE.getPort();
    44         try {
    57 	}
    45             final ServerSocket socket = new ServerSocket(0);
       
    46             int port = socket.getLocalPort();
       
    47             socket.close();
       
    48             return port;
       
    49         } catch (IOException e) {
       
    50             Activator.log(e);
       
    51             return 7222;
       
    52         }
       
    53     }
    58 
    54 
    59 	public int getOpenPort() {
    55     protected abstract int getPort();
    60 		try {
       
    61 			final ServerSocket socket = new ServerSocket(0);
       
    62 			int port = socket.getLocalPort();
       
    63 			socket.close();
       
    64 			return port;
       
    65 		} catch (IOException e) {
       
    66 			Activator.log(e);
       
    67 			return 7222;
       
    68 		}
       
    69 	}
       
    70 
       
    71 	protected abstract int getPort();
       
    72 }
    56 }