private void PingAndUpdateTransportInfoAsync(TLDCOption78 dcOption, ITransport transport, Action callback, Action <TLRPCError> faultCallback = null) { LogPublicConfig(string.Format("Ping id={0} dc_id={1} ip={2} port={3} secret={4} proxy=[{5}]", transport.Id, transport.DCId, transport.Host, transport.Port, transport.Secret != null, transport.ProxyConfig)); PingByTransportAsync(transport, TLLong.Random(), pong => { LogPublicConfig(string.Format("Ping completed id={0}", transport.Id)); LogPublicConfig("Close transport id=" + transport.Id); _transportService.CloseSpecialTransport(transport); LogPublicConfig(string.Format("Update info dc_id={0} ip={1} port={2} secret={3}", transport.DCId, transport.Host, transport.Port, transport.Secret != null)); UpdateTransportInfoAsync(dcOption, new TLString(transport.Host), new TLInt(transport.Port), result => { LogPublicConfig("Update info completed"); callback.SafeInvoke(); }); }, error => { LogPublicConfig(string.Format("Ping error id={0} error={1}", transport.Id, error)); _transportService.CloseSpecialTransport(transport); faultCallback.SafeInvoke(error); }); }
private void CheckAndUpdateTransportInfoInternalAsync(TLDCOption78 dcOption, ITransport transport, Action callback, Action <TLRPCError> faultCallback = null) { if (transport.AuthKey == null) { InitTransportAsync(transport, tuple => { LogPublicConfig(string.Format("Init transport completed id={0}", transport.Id)); lock (transport.SyncRoot) { transport.AuthKey = tuple.Item1; transport.Salt = tuple.Item2; transport.SessionId = tuple.Item3; transport.IsInitializing = false; } var authKeyId = TLUtils.GenerateLongAuthKeyId(tuple.Item1); lock (_authKeysRoot) { if (!_authKeys.ContainsKey(authKeyId)) { _authKeys.Add(authKeyId, new AuthKeyItem { AuthKey = tuple.Item1, AutkKeyId = authKeyId }); } } PingAndUpdateTransportInfoAsync(dcOption, transport, callback, faultCallback); }, error => { LogPublicConfig(string.Format("Init transport error id={0} error={1}", transport.Id, error)); }); } else { PingAndUpdateTransportInfoAsync(dcOption, transport, callback, faultCallback); } }