コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
ファイル: TurtleServer.cs プロジェクト: makjak/TurtlesBrain
        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);
            }
        }
コード例 #4
0
ファイル: TurtleServer.cs プロジェクト: makjak/TurtlesBrain
        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();
            }
        }
コード例 #5
0
ファイル: TurtleServer.cs プロジェクト: makjak/TurtlesBrain
        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}");
        }
コード例 #6
0
ファイル: Program.cs プロジェクト: makjak/TurtlesBrain
        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();
        }
コード例 #7
0
ファイル: TurtleServer.cs プロジェクト: makjak/TurtlesBrain
 private static void DisconnectHandler(string label, HttpListenerRequest request, HttpListenerResponse response)
 {
     ClientServer.RemoveTurtle(label);
     WebSocketTurtleServer.UpdateList();
     CloseResponse(response);
 }