Esempio n. 1
0
        public void HandleCommand(MatchServer server, Client client, UdpPacket packet, MatchBaseRequestPacket baseRequest)
        {
            var reader   = packet.GetReader();
            var request  = new MatchUpdateClientsRequestPacket(reader);
            var playlist = server.Playlist;

            Log.Debug(string.Format("Obtained client list from {0}", client.XUID.ToString("X16")));

            foreach (var sessionClient in request.Clients)
            {
                var thisClient = Client.Get(sessionClient.XUID);
                if (thisClient.GameVersion != 0)
                {
                    thisClient.CurrentState = playlist;
                    thisClient.SetLastTouched();

                    Log.Debug(string.Format("{0} - value {1}", thisClient.GamerTag, sessionClient.Value));
                }
                else
                {
                    Log.Warn(string.Format("Obtained invalid client {0}!", sessionClient.XUID.ToString("X16")));
                }
            }

            var sessions = from session in server.Sessions
                           where session.HostXUID == client.XUID
                           select session;

            if (sessions.Count() > 0)
            {
                var session = sessions.First();
                session.Clients = request.Clients;
                session.SetLastTouched();
            }

            // no response... yet
        }
        public void HandleCommand(MatchServer server, Client client, UdpPacket packet, MatchBaseRequestPacket baseRequest)
        {
            var reader = packet.GetReader();
            var request = new MatchUpdateClientsRequestPacket(reader);
            var playlist = server.Playlist;

            Log.Debug(string.Format("Obtained client list from {0}", client.XUID.ToString("X16")));

            foreach (var sessionClient in request.Clients)
            {
                var thisClient = Client.Get(sessionClient.XUID);
                if (thisClient.GameVersion != 0)
                {
                    thisClient.CurrentState = playlist;
                    thisClient.SetLastTouched();

                    Log.Debug(string.Format("{0} - value {1}", thisClient.GamerTag, sessionClient.Value));
                }
                else
                {
                    Log.Warn(string.Format("Obtained invalid client {0}!", sessionClient.XUID.ToString("X16")));
                }
            }

            var sessions = from session in server.Sessions
                           where session.HostXUID == client.XUID
                           select session;

            if (sessions.Count() > 0)
            {
                var session = sessions.First();
                session.Clients = request.Clients;
                session.SetLastTouched();
            }

            // no response... yet
        }