blob: 2cdd500c4ba2b2e9e8caf7d65ba6ee8dc4753d80 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004, 2007 Boeing.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Boeing - initial API and implementation
*******************************************************************************/
package org.eclipse.osee.ote.runtimemanager.internal;
import java.net.BindException;
import java.net.Inet6Address;
import java.net.InetAddress;
import java.util.logging.Level;
import org.eclipse.osee.framework.logging.OseeLog;
import org.eclipse.osee.framework.plugin.core.CorePreferences;
import org.eclipse.osee.ote.classserver.ClassServer;
import org.eclipse.osee.ote.classserver.ResourceFinder;
import org.eclipse.osee.ote.runtimemanager.RuntimeManager;
import org.eclipse.osee.ote.runtimemanager.SafeWorkspaceTracker;
public class RuntimeBundleServer {
private ClassServer classServer;
private String classServerPath;
private ResourceFinder resourceFinder;
/**
* Creates a new ClassServer which will serve all projects currently in the workspace
*/
public RuntimeBundleServer(SafeWorkspaceTracker safeWorkspaceTracker) {
try {
InetAddress useHostAddress = CorePreferences.getDefaultInetAddress();
classServer = new ClassServer(0, useHostAddress) {
@Override
protected void fileDownloaded(String fp, InetAddress addr) {
System.out.println("RuntimeBundleServer: File " + fp + " downloaded to " + addr);
}
};
resourceFinder = new RuntimeLibResourceFinder(safeWorkspaceTracker);
classServer.addResourceFinder(resourceFinder);
classServer.start();
if(useHostAddress instanceof Inet6Address){
classServerPath = "http://[" + useHostAddress.getHostAddress() + "]:" + classServer.getPort() + "/";
} else {
classServerPath = "http://" + useHostAddress.getHostAddress() + ":" + classServer.getPort() + "/";
}
} catch (BindException ex) {
OseeLog.log(
RuntimeManager.class,
Level.SEVERE,
"Class Server not started. Likely the IP address used is not local. Set your IP address in the advanced page.",
ex);
} catch (Exception ex) {
OseeLog.log(RuntimeManager.class, Level.SEVERE, "Class Server not started.", ex);
}
}
/**
* @return the path to the class server, to be passed to the environment upon connection
*/
public String getClassServerPath() {
return classServerPath;
}
/**
* Stops the class server. This should be called upon stop of the RuntimeManager
*/
public void stopServer() {
classServer.terminate();
}
}