public KSPAPI(FormatterProvider formatters, VesselChangeDetector vesselChangeDetector, ServerConfiguration serverConfiguration) { APIHandlers.Add(new PausedDataLinkHandler(formatters)); APIHandlers.Add(new FlyByWireDataLinkHandler(formatters)); APIHandlers.Add(new FlightDataLinkHandler(formatters)); APIHandlers.Add(new MechJebDataLinkHandler(formatters)); APIHandlers.Add(new TimeWarpDataLinkHandler(formatters)); APIHandlers.Add(new TargetDataLinkHandler(formatters)); APIHandlers.Add(new CompoundDataLinkHandler( new List<DataLinkHandler>() { new OrbitDataLinkHandler(formatters), new SensorDataLinkHandler(vesselChangeDetector, formatters), new VesselDataLinkHandler(formatters), new BodyDataLinkHandler(formatters), new ResourceDataLinkHandler(vesselChangeDetector, formatters), new APIDataLinkHandler(this, formatters, serverConfiguration), new NavBallDataLinkHandler(formatters), new MapViewDataLinkHandler(formatters), new DockingDataLinkHandler(formatters) }, formatters )); APIHandlers.Add(new DefaultDataLinkHandler(formatters)); }
public KSPAPI(FormatterProvider formatters, VesselChangeDetector vesselChangeDetector, ServerConfiguration serverConfiguration, PluginManager manager) { _manager = manager; APIHandlers.Add(new PausedDataLinkHandler(formatters)); APIHandlers.Add(new FlyByWireDataLinkHandler(formatters)); APIHandlers.Add(new FlightDataLinkHandler(formatters)); APIHandlers.Add(new MechJebDataLinkHandler(formatters)); APIHandlers.Add(new TimeWarpDataLinkHandler(formatters)); APIHandlers.Add(new TargetDataLinkHandler(formatters)); APIHandlers.Add(new CompoundDataLinkHandler( new List <DataLinkHandler>() { new OrbitDataLinkHandler(formatters), new SensorDataLinkHandler(vesselChangeDetector, formatters), new VesselDataLinkHandler(formatters), new BodyDataLinkHandler(formatters), new ResourceDataLinkHandler(vesselChangeDetector, formatters), new APIDataLinkHandler(this, formatters, serverConfiguration), new NavBallDataLinkHandler(formatters), new MapViewDataLinkHandler(formatters), new DockingDataLinkHandler(formatters) }, formatters )); }
public void run() { // configure http server but do not start running yet Servers.MinimalHTTPServer.ServerConfiguration config = new Servers.MinimalHTTPServer.ServerConfiguration(); Servers.MinimalHTTPServer.Server server = new Servers.MinimalHTTPServer.Server(config); server.ServerNotify += server_ServerNotify; server.addHTTPResponsibility(new ElseResponsibility()); server.addHTTPResponsibility(new RunningResponsibility()); // configure web socket server but do not start running Servers.MinimalWebSocketServer.ServerConfiguration webSocketconfig = new Servers.MinimalWebSocketServer.ServerConfiguration(); webSocketconfig.bufferSize = 100; Servers.MinimalWebSocketServer.Server webSocketServer = new Servers.MinimalWebSocketServer.Server(webSocketconfig); webSocketServer.ServerNotify += server_ServerNotify; DataSources dataSources = new DataSources(); VesselChangeDetector vesselChangeDetector = new VesselChangeDetector(false); IKSPAPI kspAPI = new DummyKSPAPI(JSONFormatterProvider.Instance, vesselChangeDetector, config); //webSocketServer.addWebSocketService("/server", new KSPWebSocketService(kspAPI,)); //webSocketServer.subscribeToHTTPForStealing(server); // start the HTTP server //server.startServing(); //Console.Read(); //server.stopServing(); }
static private void startDataLink() { if (webServer == null) { try { PluginLogger.print("Telemachus data link starting"); readConfiguration(); // Data access tools vesselChangeDetector = new VesselChangeDetector(isPartless); apiInstance = new KSPAPI(JSONFormatterProvider.Instance, vesselChangeDetector, serverConfig, pluginManager); // Create the dispatcher and handlers. Handlers added in reverse priority order so that new ones are not ignored. webDispatcher = new KSPWebServerDispatcher(); webDispatcher.AddResponder(new ElseResponsibility()); webDispatcher.AddResponder(new IOPageResponsibility()); var cameraLink = new CameraResponsibility(apiInstance, rateTracker); webDispatcher.AddResponder(cameraLink); var dataLink = new DataLinkResponsibility(apiInstance, rateTracker); webDispatcher.AddResponder(dataLink); // Create the server and associate the dispatcher webServer = new HttpServer(serverConfig.ipAddress, serverConfig.port); webServer.OnGet += webDispatcher.DispatchRequest; webServer.OnPost += webDispatcher.DispatchRequest; // Create the websocket server and attach to the web server webServer.AddWebSocketService("/datalink", () => new KSPWebSocketService(apiInstance, rateTracker)); // Finally, start serving requests! try { webServer.Start(); } catch (Exception ex) { PluginLogger.print("Error starting web server: " + ex.ToString()); throw; } PluginLogger.print("Telemachus data link listening for requests on the following addresses: (" + string.Join(", ", serverConfig.ValidIpAddresses.Select(x => x.ToString() + ":" + serverConfig.port.ToString()).ToArray()) + "). Try putting them into your web browser, some of them might not work."); } catch (Exception e) { PluginLogger.print(e.Message); PluginLogger.print(e.StackTrace); } } }
public void run() { ServerConfiguration config = new ServerConfiguration(); Telemachus.VesselChangeDetector vesselChangeDetector = new Telemachus.VesselChangeDetector(false); Telemachus.KSPAPI api = new Telemachus.KSPAPI(Telemachus.JSONFormatterProvider.Instance, vesselChangeDetector, config, null); List <Telemachus.APIEntry> apiList = new List <Telemachus.APIEntry>(); api.getAPIList(ref apiList); writeToMarkdownWiki(Path.Combine(Directory.GetParent(Directory.GetCurrentDirectory()).Parent.Parent.FullName, "Telemachus.wiki"), "API-String.md", ref apiList); }
static private void startDataLink() { if (server == null) { try { PluginLogger.print("Telemachus data link starting"); readConfiguration(); server = new Server(serverConfig); server.ServerNotify += HTTPServerNotify; server.addHTTPResponsibility(new ElseResponsibility()); ioPageResponsibility = new IOPageResponsibility(); server.addHTTPResponsibility(ioPageResponsibility); vesselChangeDetector = new VesselChangeDetector(isPartless); dataLinkResponsibility = new DataLinkResponsibility(serverConfig, new KSPAPI(JSONFormatterProvider.Instance, vesselChangeDetector, serverConfig)); server.addHTTPResponsibility(dataLinkResponsibility); Servers.MinimalWebSocketServer.ServerConfiguration webSocketconfig = new Servers.MinimalWebSocketServer.ServerConfiguration(); webSocketconfig.bufferSize = 300; webSocketServer = new Servers.MinimalWebSocketServer.Server(webSocketconfig); webSocketServer.ServerNotify += WebSocketServerNotify; kspWebSocketService = new KSPWebSocketService(new KSPAPI(JSONFormatterProvider.Instance, vesselChangeDetector, serverConfig), kspWebSocketDataStreamer); webSocketServer.addWebSocketService("/datalink", kspWebSocketService); webSocketServer.subscribeToHTTPForStealing(server); server.startServing(); PluginLogger.print("Telemachus data link listening for requests on the following addresses: (" + server.getIPsAsString() + "). Try putting them into your web browser, some of them might not work."); } catch (Exception e) { PluginLogger.print(e.Message); PluginLogger.print(e.StackTrace); } } }
public DummyKSPAPI(FormatterProvider formatters, VesselChangeDetector vesselChangeDetector, Servers.AsynchronousServer.ServerConfiguration serverConfiguration) { APIHandlers.Add(new DummyHandler(formatters)); }
private static void startDataLink() { if (server == null) { try { PluginLogger.print("Telemachus data link starting"); readConfiguration(); server = new Server(serverConfig); server.ServerNotify += HTTPServerNotify; server.addHTTPResponsibility(new ElseResponsibility()); ioPageResponsibility = new IOPageResponsibility(); server.addHTTPResponsibility(ioPageResponsibility); vesselChangeDetector = new VesselChangeDetector(); dataLinkResponsibility = new DataLinkResponsibility(serverConfig, new KSPAPI(JSONFormatterProvider.Instance, vesselChangeDetector, serverConfig)); server.addHTTPResponsibility(dataLinkResponsibility); Servers.MinimalWebSocketServer.ServerConfiguration webSocketconfig = new Servers.MinimalWebSocketServer.ServerConfiguration(); webSocketconfig.bufferSize = 300; webSocketServer = new Servers.MinimalWebSocketServer.Server(webSocketconfig); webSocketServer.ServerNotify += WebSocketServerNotify; kspWebSocketService = new KSPWebSocketService(new KSPAPI(JSONFormatterProvider.Instance, vesselChangeDetector, serverConfig)); webSocketServer.addWebSocketService("/datalink", kspWebSocketService); webSocketServer.subscribeToHTTPForStealing(server); server.startServing(); PluginLogger.print("Telemachus data link listening for requests on the following addresses: (" + server.getIPsAsString() + "). Try putting them into your web browser, some of them might not work."); } catch (Exception e) { PluginLogger.print(e.Message); PluginLogger.print(e.StackTrace); } } }