Stop() public method

public Stop ( ) : void
return void
Esempio n. 1
0
            public void Run()
            {
                //Server
                _serverListener = new ServerListener();

                NetManager server = new NetManager(_serverListener, _clientCount);

                server.UnsyncedEvents = true;
                server.UpdateTime     = 1;
                if (!server.Start(9050))
                {
                    Console.WriteLine("Server start failed");
                    Console.ReadKey();
                    return;
                }
                _serverListener.Server = server;

                //Clients
                _clients = new List <ClientListener>(_clientCount);

                for (int i = 0; i < _clientCount; i++)
                {
                    var _clientListener = new ClientListener();
                    var client1         = new NetManager(_clientListener);
                    client1.SimulationMaxLatency = 1500;
                    client1.MergeEnabled         = true;
                    client1.UnsyncedEvents       = true;
                    client1.UpdateTime           = 1;
                    _clientListener.Client       = client1;
                    if (!client1.Start())
                    {
                        Console.WriteLine("Client1 start failed");
                        return;
                    }
                    _clients.Add(_clientListener);
                    client1.Connect("127.0.0.1", 9050, AppKey);
                }

                // Wait
                bool waitForConnection = true;

                while (waitForConnection)
                {
                    Thread.Sleep(15);

                    Console.WriteLine("Waiting:: Errors " + _serverListener.Errors + " Peers " + _serverListener.Server.PeersCount);

                    if (_serverListener.Errors > 0)
                    {
                        return;
                    }

                    waitForConnection = _serverListener.Server.PeersCount < _clientCount;
                }

                Console.WriteLine("Ready. Press any key to start");
                Console.ReadKey();
                Console.WriteLine("Starting");

                var checker = new HealthChecker();

                checker.Start(this);

                //Send

                _serverListener.Start();

                foreach (var client in _clients)
                {
                    client.Start();
                }

                while (!Console.KeyAvailable)
                {
                    Thread.Sleep(15);
                }

                Console.WriteLine("DONE");

                _serverListener.Stop();

                foreach (var client in _clients)
                {
                    client.Stop();
                }

                server.Stop();

                Console.WriteLine("Press any key to exit");
                Console.ReadKey();
            }
Esempio n. 2
0
    static void Main(string[] args)
    {
        ClientList = new List <ClientHandler>();
        Server.Log(String.Format("Initializing server on {0}:{1}", ServerConstants.SERVER_HOST, ServerConstants.SERVER_PORT));
        TcpListener    Sock     = new TcpListener(IPAddress.Parse(ServerConstants.SERVER_HOST), ServerConstants.SERVER_PORT);
        ServerListener Listener = new ServerListener();

        Listener.Start(Sock);
        Thread.Sleep(1000);

        // Launch interactive command interface for user
        bool KeepGoing      = true;
        int  CurrentSession = -1;

        while (KeepGoing)
        {
            MakePrompt();
            string   UserInput       = Console.ReadLine();
            string[] UserInputTokens = UserInput.Split(' ');
            switch (UserInputTokens[0].ToLower())
            {
            case "quit":
                if (CurrentSession == -1)      // At main menu: Send quit to all agents and exit server
                {
                    Log("Quitting all Sessions");
                    KeepGoing = false;
                    foreach (ClientHandler client in ClientList)
                    {
                        client.SendClientCommand("quit");
                        client.Stop();
                    }
                    Thread.Sleep(1000);     // Ensure each ClientHandler thread has a chance to send the message before program exits.
                }
                else                        // In session menu: Send quit to selected session, remove from list, and reset to main menu.
                {
                    Log("Quitting Session " + CurrentSession);
                    ClientList[CurrentSession].SendClientCommand("quit");
                    ClientList[CurrentSession].Stop();
                    ClientList.RemoveAt(CurrentSession);
                    CurrentSession = -1;
                    Prompt         = ServerConstants.PROMPT;
                }
                break;

            case "back":
                CurrentSession = -1;
                Prompt         = ServerConstants.PROMPT;
                break;

            case "list":
                for (int ctr = 0; ctr < ClientList.Count; ctr++)
                {
                    Console.WriteLine(ctr + ") " + ClientList[ctr].Identify());
                }
                break;

            case "enter":
                try{
                    string SessionID        = UserInputTokens[1];
                    int    SpecifiedSession = Int32.Parse(SessionID);
                    if (ClientList.Count > SpecifiedSession)
                    {
                        CurrentSession = SpecifiedSession;
                        Console.WriteLine("Entering session " + CurrentSession);
                        Prompt = String.Format("{0}({1}) ", ServerConstants.PROMPT, CurrentSession);
                    }
                }catch (Exception) {
                    CurrentSession = -1;
                    Prompt         = ServerConstants.PROMPT;
                    LogError("Error in entering specified session");
                }
                break;

            case "cmd":
            case "info":
                if (CurrentSession == -1)
                {
                    LogError("This Command can only be used after a session has been selected");
                }
                else
                {
                    try{
                        ClientList[CurrentSession].SendClientCommand(UserInput);
                        Thread.Sleep(100);
                    }catch (ArgumentOutOfRangeException) {
                        LogError("The specified session does not exist");
                    }catch (Exception) {
                        LogError("Error in sending command to selected session");
                    }
                }
                break;

            case "":
                break;

            default:
                LogError("Unknown command: " + UserInput);
                break;
            }
        }
        Listener.Stop();
        foreach (ClientHandler Client in ClientList)
        {
            Client.Stop();
        }
    }
Esempio n. 3
0
        static void Main(string[] args)
        {
            PrintManager printManager = new PrintManager();


            //configure the port the server should listen on
            ServerConfig config = new ServerConfig();

            config.port = 8080;

            //configure the routes the server should listen for
            ServerRoute route = new ServerRoute();

            route.method = ServerRouteMethod.GET;
            route.route  = "/";
            route.action = (ServerRequest request, ServerResponse response) => {
                response.Status(200, "Welcome to THE SBI Printing Controller");
                return(response);
            };

            ServerRoute printerListRoute = new ServerRoute();

            printerListRoute.method = ServerRouteMethod.GET;
            printerListRoute.route  = "/list";
            printerListRoute.action = (ServerRequest request, ServerResponse response) => {
                Console.WriteLine("Getting the list of installed printers");

                string json = "{";

                foreach (string printer in printManager.installed)
                {
                    json += "\"" + printer + "\",";
                    Console.WriteLine("This is an installed printer option " + printer);
                }

                json += "}";

                response.Json(json);
                return(response);
            };

            ServerRoute getDefaultPrinterRoute = new ServerRoute();

            getDefaultPrinterRoute.method = ServerRouteMethod.GET;
            getDefaultPrinterRoute.route  = "/get/default";
            getDefaultPrinterRoute.action = (ServerRequest request, ServerResponse response) => {
                Console.WriteLine("Getting the default printer");
                string json = "{";

                json += "\"" + printManager.getDefaultPrinter() + "\"";

                json += "}";

                response.Json(json);
                return(response);
            };

            ServerRoute setDefaultPrinterRoute = new ServerRoute();

            setDefaultPrinterRoute.method = ServerRouteMethod.GET;
            setDefaultPrinterRoute.route  = "/set/default";
            setDefaultPrinterRoute.action = (ServerRequest request, ServerResponse response) => {
                string[] name = request.request.QueryString.GetValues("printer");


                foreach (string printer in System.Drawing.Printing.PrinterSettings.InstalledPrinters)
                {
                    if (name[0] == printer)
                    {
                        Console.WriteLine("setting default printer to:" + name[0]);
                        printManager.setDefaultPrinter(name[0]);
                        response.Status(200, "setting default printer to:" + name[0]);
                        return(response);
                    }
                }


                response.Status(400, "Bad Request");
                return(response);
            };

            ServerRoute printDefaultRoute = new ServerRoute();

            printDefaultRoute.method = ServerRouteMethod.POST;
            printDefaultRoute.route  = "/print";
            printDefaultRoute.action = (ServerRequest request, ServerResponse response) => {
                PrintDocument document = new PrintDocument();

                if (document.PrinterSettings.PrinterName == printManager.getDefaultPrinter())
                {
                    response.Status(200, "PRINTING");
                    return(response);
                }

                response.Status(400, "The Printer has been changed");
                return(response);
            };

            //add the route to the routes
            ServerRoutes routes = new ServerRoutes();

            routes.Add(route);
            routes.Add(printerListRoute);
            routes.Add(getDefaultPrinterRoute);
            routes.Add(setDefaultPrinterRoute);

            try
            {
                ServerListener listener = new ServerListener(config, routes);

                listener.Start();
                Console.ReadKey();
                listener.Stop();
            }

            catch (Exception e)
            {
                Console.WriteLine("Error:" + e.Message);
            }

            return;
        }
Esempio n. 4
0
 /// <summary>
 /// Stops the server.
 /// </summary>
 private void StopServer()
 {
     OperationThread.Abort();
     OperationThread.Join();
     ServerListener.Stop();
 }