Esempio n. 1
0
        private bool handleDataPush(HTTPConnection connection)
        {
            // it's a server that is updating data
            string command = connection.getArg("action");

            // commands
            if (command == "add")
            {
                //string host = connection.getArg("host");
                string port = connection.getArg("port");
                if (port == string.Empty)
                    port = "5154";

                ServerHost host = new ServerHost();
                host.hostname = connection.getArg("host");
                host.port = 5154;
                if (connection.hasArg(port))
                     int.TryParse(connection.getArg(port),out host.port);

                GameServer server = null;
                List<GameServer> servers = serverDB.findServersByHost(host);
                if (servers.Count != 0)
                    server = servers[0];
                else
                    server = serverDB.addServer(host);

                if (server == null)
                    return pushError(connection, "invalid server");

                server.description = connection.getArg("desc");
                string playerBlob = connection.getArg("players");
                if (playerBlob != null && playerBlob != string.Empty)
                {
                    // parse players
                    XmlSerializer xml = new XmlSerializer(typeof(List<GamePlayer>));
                    StreamReader reader = new StreamReader(playerBlob);
                    server.players = (List<GamePlayer>)xml.Deserialize(reader);;
                    reader.Close();
                }
                serverDB.updateServer(server);

                return pushOK(connection);
            }
            //update

            return pushError(connection,"unknown command");
        }
Esempio n. 2
0
        public bool handleURL(HttpListenerContext context)
        {
            HTTPConnection connection = new HTTPConnection(context);

            if (connection.hasArg("isgameserver"))
                return handleDataPush(connection);

            return handleDataRequest(connection);
        }