Skip to content
This repository has been archived by the owner on Mar 27, 2018. It is now read-only.

Commit

Permalink
Changed activator to work with multiple clients but always look for a…
Browse files Browse the repository at this point in the history
… free port starting from the default port.
  • Loading branch information
Matthew Gerring committed May 28, 2015
1 parent 6d4382c commit 726ad4c
Showing 1 changed file with 10 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -42,23 +42,28 @@ public void start(BundleContext bundleContext) throws Exception {
final boolean enabled = getPreferenceStore().getBoolean(PreferenceConstants.PREF_PY4J_ACTIVE);
boolean override = Boolean.getBoolean(PreferenceConstants.PREF_PY4J_ACTIVE); // They can override the default using -DPREF_PY4J_ACTIVE=...
if (!enabled && !override) return;

// We override any port setting because we record the autogenerated one.
getPreferenceStore().setValue(PreferenceConstants.PREF_DEFAULT_PORT, GatewayServer.DEFAULT_PORT);
getPreferenceStore().setValue(PreferenceConstants.PREF_DEFAULT_CALLBACK_PORT, GatewayServer.DEFAULT_PYTHON_PORT);

// Now we look for a free port and record the one we end up with if we change it (multiple clients are possible!)
int defaultPort = getPreferenceStore().getInt(PreferenceConstants.PREF_DEFAULT_PORT);
if (defaultPort<1) defaultPort = GatewayServer.DEFAULT_PORT;

// We look for a free port and change the preference if the port is not free.
if (!isPortFree(defaultPort)) {
defaultPort = getFreePort(defaultPort);
defaultPort = getFreePort(defaultPort, 2);
getPreferenceStore().setValue(PreferenceConstants.PREF_DEFAULT_PORT, defaultPort);
getPreferenceStore().setValue(PreferenceConstants.PREF_DEFAULT_CALLBACK_PORT, getFreePort(defaultPort+1, 1));
}


int defaultCallBackPort = getPreferenceStore().getInt(PreferenceConstants.PREF_DEFAULT_CALLBACK_PORT);
if (defaultCallBackPort<1) defaultCallBackPort = GatewayServer.DEFAULT_PYTHON_PORT;

// We look for a free port and change the preference if the port is not free.
if (!isPortFree(defaultCallBackPort)) {
defaultCallBackPort = getFreePort(defaultCallBackPort);
defaultCallBackPort = getFreePort(defaultCallBackPort, 2);
getPreferenceStore().setValue(PreferenceConstants.PREF_DEFAULT_CALLBACK_PORT, defaultCallBackPort);
}

Expand Down Expand Up @@ -106,11 +111,11 @@ public void start(BundleContext bundleContext) throws Exception {
* @param startPort
* @return
*/
public static int getFreePort(final int startPort) {
public static int getFreePort(final int startPort, int inc) {

int port = startPort;
while (!isPortFree(port))
port++;
port+=inc;

return port;
}
Expand Down

0 comments on commit 726ad4c

Please sign in to comment.