Пример #1
0
        public async Task <OperationStatusInfo> Login(string login, string password)
        {
            return(await Task.Run(() =>
            {
                OperationStatusInfo operationStatusInfo = new OperationStatusInfo(operationStatus: OperationStatus.Done);
                LoginRequestEvent request = new LoginRequestEvent(login, password);

                try
                {
                    LoginResponseEvent response =
                        _hubEnvironment.UseCaseFactory.Create <IUseCase <LoginRequestEvent, LoginResponseEvent> >().Execute(request);

                    operationStatusInfo.AttachedObject = response.Account;

                    return operationStatusInfo;
                }
                catch (Exception ex)
                {
                    operationStatusInfo.OperationStatus = OperationStatus.Cancelled;
                    operationStatusInfo.AttachedInfo = ex.Message;
                }

                return operationStatusInfo;
            }));
        }
Пример #2
0
    void Start()
    {
        LoginRequestEvent levent = new LoginRequestEvent();
        levent.username = localUsername;
        levent.password = "******";
        WriteQueue.Write(levent);

        localPrefab = Resources.Load<GameObject>("Prefabs/LocalPlayer");
        remotePrefab = Resources.Load<GameObject>("Prefabs/RemotePlayer");
        //NetworkLoop network = new NetworkLoop();
        //Thread oThread = new Thread(new ThreadStart(network.RunNetworkLoop));
        //oThread.Start();
        eventHandlers = new Dictionary<string, eventHandlerDes>();
        eventHandlers["moveEvent"] = moveHandler;
        eventHandlers["loginEvent"] = loginHandler;
        eventHandlers["joinAreaEvent"] = joinAreaHandler;
        eventHandlers["info"] = infoHandler;
        eventHandlers["registerEvent"] = registerHandler;
        eventHandlers["remotePlayerJoinEvent"] = remotePlayerJoinHandler;
        eventHandlers["quitEvent"] = quitHandler;
        eventHandlers["areaChatEvent"] = areaChatHandler;
    }
Пример #3
0
        /// <summary>
        /// Handle a list of packets from an unregistered client.
        /// </summary>
        /// <param name="client">The unregistered client.</param>
        /// <param name="packets">The list of packets to handle.</param>
        private void HandlePacketsUnregisteredClient(NetServerClient client, List <Packet.Packet> packets)
        {
            for (var i = 0; i < packets.Count; i++)
            {
                var packet = packets[i];

                // Create a server update packet from the raw packet instance
                var serverUpdatePacket = new ServerUpdatePacket(packet);
                if (!serverUpdatePacket.ReadPacket())
                {
                    // If ReadPacket returns false, we received a malformed packet, which we simply ignore for now
                    // Logger.Get().Warn(this, "Received malformed packet, ignoring");
                    continue;
                }

                client.UpdateManager.OnReceivePacket <ServerUpdatePacket, ServerPacketId>(serverUpdatePacket);

                if (!serverUpdatePacket.GetPacketData().TryGetValue(
                        ServerPacketId.LoginRequest,
                        out var packetData
                        ))
                {
                    continue;
                }

                var loginRequest = (LoginRequest)packetData;

                Logger.Get().Info(this, $"Received login request from '{loginRequest.Username}'");

                // Invoke the handler of the login request and decide what to do with the client based on the result
                var allowClient = LoginRequestEvent?.Invoke(
                    client.Id,
                    client.EndPoint,
                    loginRequest,
                    client.UpdateManager
                    );
                if (!allowClient.HasValue)
                {
                    Logger.Get().Error(this, "Login request has no handler");
                    return;
                }

                if (allowClient.Value)
                {
                    // Logger.Get().Info(this, $"Login request from '{loginRequest.Username}' approved");
                    // client.UpdateManager.SetLoginResponseData(LoginResponseStatus.Success);

                    // Register the client and add them to the dictionary
                    client.IsRegistered           = true;
                    _registeredClients[client.Id] = client;

                    // Now that the client is registered, we forward the rest of the packets to the other handler
                    var leftoverPackets = packets.GetRange(
                        i + 1,
                        packets.Count - i - 1
                        );

                    HandlePacketsRegisteredClient(client, leftoverPackets);
                }
                else
                {
                    client.Disconnect();
                    _clients.Remove(client);
                }

                break;
            }
        }
Пример #4
0
 private void Authenticate()
 {
     //TODO: authentication handlinga ödlfjglkj
     LoginRequestEvent levent = new LoginRequestEvent();
     levent.username = "******";
     levent.password = "******";
     //WriteJSONMessage(stream, levent);
     WriteQueue.Write(levent);
 }