Ejemplo n.º 1
0
        private void sendAuthorizatonData(string data, NetworkStream nws, TcpClient client, ref User user)
        {
            List <User> remoteUsers = ServerSystemController.GetRegisteredUsers();

            byte[] responseStream;
            lock (registrationLock)
            {
                if (!remoteUsers.Contains(user))
                {
                    RegisteredUsers.Add(client, user);
                    ServerSystemController.AddUserToSystem(user);
                    showRegisteredPlayers();
                    showConnectedPlayers();
                    responseStream = Protocol.GenerateStream(ProtocolConstants.SendType.RESPONSE, ProtocolConstants.LOGIN, ProtocolConstants.OK_RESPONSE_CODE);
                }
                else
                {
                    if (RegisteredUsers.ContainsValue(user))
                    {
                        User userInServer = RegisteredUsers.FirstOrDefault(x => x.Value.NickName.Equals(data)).Value;

                        TcpClient clientInServer = RegisteredUsers.FirstOrDefault(x => x.Value.NickName.Equals(data)).Key;
                        if (userInServer.Connected)
                        {
                            responseStream = Protocol.GenerateStream(ProtocolConstants.SendType.RESPONSE, ProtocolConstants.LOGIN, "400");
                        }
                        else
                        {
                            User userFromServer = ServerSystemController.GetUserInServer(user);
                            RegisteredUsers.Remove(clientInServer);
                            RegisteredUsers.Add(client, userFromServer);
                            showRegisteredPlayers();
                            showConnectedPlayers();
                            responseStream = Protocol.GenerateStream(ProtocolConstants.SendType.RESPONSE, ProtocolConstants.LOGIN, ProtocolConstants.OK_RESPONSE_CODE);
                        }
                    }
                    else
                    {
                        User userFromServer = ServerSystemController.GetUserInServer(user);
                        RegisteredUsers.Add(client, userFromServer);
                        showRegisteredPlayers();
                        showConnectedPlayers();
                        responseStream = Protocol.GenerateStream(ProtocolConstants.SendType.RESPONSE, ProtocolConstants.LOGIN, ProtocolConstants.OK_RESPONSE_CODE);
                    }
                }
                nws.Write(responseStream, 0, responseStream.Length);
            }
        }