public void OnDataRetrieved(AbstractDatagram datagram)
 {
     switch (datagram.GetDatagramId())
     {
     case RequestIdentifiers.UsersInfo:
         _currentDataToUpdate = datagram as UsersInformationRequestBody;
         UpdateUsersInfo(_currentDataToUpdate);
         break;
     }
 }
Пример #2
0
        public void FilterRequest(AbstractDatagram datagram, IPEndPoint endPoint)
        {
            lock (userManagerLock)
            {
                switch (datagram.GetDatagramId())
                {
                case RequestIdentifiers.UserConnect:
                {
                    lock (connectDisconnectLock)
                    {
                        var id = ((UserConnectRequestbody)datagram).UserIdentifier;
                        var initialUserData = GetInitialUserData(id);
                        _listener.Send(BinarySerializer.Serialize(initialUserData), endPoint);
                        Console.Write("User Connected id: " + id + "\n");
                        PlayerConnectedRequest(initialUserData.UserInformation);

                        _userManager.AddUser((UserConnectRequestbody)datagram, endPoint);
                        break;
                    }
                }

                case RequestIdentifiers.PlayerDisconnected:
                {
                    lock (connectDisconnectLock)
                    {
                        _userManager.RemoveUser(datagram as PlayerDisconnectedRequestBody);
                        break;
                    }
                }

                case RequestIdentifiers.ConcreteUserInformation:
                {
                    _userManager.UpdateUser(datagram as ConcreteUserInformation);
                    break;
                }

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }
        }
Пример #3
0
    private void OnDataRetrieved(AbstractDatagram datagram)
    {
        switch (datagram.GetDatagramId())
        {
        case RequestIdentifiers.PlayerConnected:
        {
            var userInfo = (datagram as PlayerConnectedRequestBody).UserInformation;
            PlayerConnected?.Invoke(userInfo);
            break;
        }

        case RequestIdentifiers.PlayerDisconnected:
        {
            var id = (datagram as PlayerDisconnectedRequestBody).UserIdentifier;
            PlayerDisconnected?.Invoke(id);
        }
        break;

        default:
            throw new ArgumentOutOfRangeException();
        }
    }
Пример #4
0
 public void ManageReceivedData(AbstractDatagram datagram, IPEndPoint endPoint)
 {
     Task.Run(() => { FilterRequest(datagram, endPoint); });
 }