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 } |