Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
0
        /// <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);
 }