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; })); }
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; }
/// <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; } }
private void Authenticate() { //TODO: authentication handlinga ödlfjglkj LoginRequestEvent levent = new LoginRequestEvent(); levent.username = "******"; levent.password = "******"; //WriteJSONMessage(stream, levent); WriteQueue.Write(levent); }