private async Task ReceiveLogon(NetworkMessage messsage) { CMsgClientLogonResponse response = messsage.Deserialize <CMsgClientLogonResponse>(); if (response.eresult != 1) { await NetLog.InfoAsync($"Logon denied: {(Result)response.eresult}. Expect to disconnect").ConfigureAwait(false); } if (response.eresult == 1) { CellId = response.cell_id; var id = (messsage.Header as ClientHeader).SteamId; InstanceId = (long)response.client_instance_id; await NetLog.InfoAsync($"Logged in to Steam with session Id {SessionId} and steam ID {SteamId}").ConfigureAwait(false); _heartbeatCancel = new CancellationTokenSource(); _heartBeatTask = RunHeartbeatAsync(response.out_of_game_heartbeat_seconds * 1000, _heartbeatCancel.Token); await LoggedOn.TimedInvokeAsync(this, EventArgs.Empty, TaskTimeout, NetLog).ConfigureAwait(false); } else { await LoginRejected.InvokeAsync(this, new LoginRejectedEventArgs(response.client_supplied_steamid, (Result)response.eresult, (Result)response.eresult_extended, response.email_domain)).ConfigureAwait(false); } }
/// <summary> /// Executes the session's logon process. /// <remarks> /// This action is idempotent, calling this multiple times has no ill effect. /// </remarks> /// </summary> public void Logon() { if (Active) { return; } switch (Configuration.Role) { case Role.Acceptor: AcceptLogon(); break; case Role.Initiator: InitiateLogon(); break; default: throw new Exception("Unrecognised session role"); } Active = true; LoggedOn?.Invoke(this); }
private void OnLoggedOn(EventArgs e) { LoggedOn?.Invoke(this, e); }