protected override void Dispatch(ITurtleApiMessage msg) { var cm = msg as ClientMessage; if (cm != null) { Program.Verbose($"ClientMessage: {cm.Label} -> {cm.Command}"); ClientServer.Execute(cm.Label, cm.Command); } }
private static void ProcessMessage(string message) { Turtle turtle; string label = message.Split('|')[0]; string command = message.Split('|')[1]; if (ClientServer.TryGetTurtle(label, out turtle)) { turtle.Execute(command); } }
private static void QueryCommandHandler(string label, HttpListenerRequest request, HttpListenerResponse response) { Program.Debug($"QUERY: {label}"); Turtle turtle; if (ClientServer.TryGetTurtle(label, out turtle)) { CloseResponse(response, turtle.WaitForCommand()); } else { Program.Warn($"QUERY TURTLE NOT FOUND: {label}"); CloseResponse(response); } }
private static void ReturnHandler(string label, HttpListenerRequest request, HttpListenerResponse response) { var s = RequestBodyAsString(request); GotResult?.Invoke(label, s); Turtle commandTurtle; if (ClientServer.TryGetTurtle(label, out commandTurtle)) { commandTurtle.SetResult(s); CloseResponse(response); } else { throw new InvalidOperationException(); } }
private static void HelloHandler(string label, HttpListenerRequest request, HttpListenerResponse response) { Program.Debug($"HELLO: {label}"); Turtle turtle; if (ClientServer.TryGetTurtle(label, out turtle)) { var newName = CreateUniqueName(); Program.Warn($"Already found {label} -> {newName}"); label = newName; } turtle = new Turtle(label); ClientServer.AddTurtle(turtle); turtle.args = RequestBodyAsString(request); CloseResponse(response, label); Program.Debug($"CLOSED {label}"); }
static void Main(string[] args) { ServicePointManager.DefaultConnectionLimit = 1000; ServicePointManager.MaxServicePoints = 1000; ThreadPool.SetMinThreads(10, 10); MessageConverter.Initialize(); int i; int.TryParse(ConfigurationManager.AppSettings.Get("TurtleServerPort"), out i); TurtleServer.Start(i); int.TryParse(ConfigurationManager.AppSettings.Get("ClientServerPort"), out i); ClientServer.Start(i); int.TryParse(ConfigurationManager.AppSettings.Get("WebSocketTurtleServerPort"), out i); WebSocketTurtleServer.Start(i); AuthManager.Initialize("MyData"); Info("Success"); Console.ReadLine(); }
private static void DisconnectHandler(string label, HttpListenerRequest request, HttpListenerResponse response) { ClientServer.RemoveTurtle(label); WebSocketTurtleServer.UpdateList(); CloseResponse(response); }