Added gateway url caching

This commit is contained in:
RogueException
2016-06-13 20:05:11 -03:00
parent b703fba0b7
commit d2df6d038d

View File

@@ -36,6 +36,7 @@ namespace Discord.API
private readonly SemaphoreSlim _connectionLock; private readonly SemaphoreSlim _connectionLock;
private CancellationTokenSource _loginCancelToken, _connectCancelToken; private CancellationTokenSource _loginCancelToken, _connectCancelToken;
private string _authToken; private string _authToken;
private string _gatewayUrl;
private bool _isDisposed; private bool _isDisposed;
public LoginState LoginState { get; private set; } public LoginState LoginState { get; private set; }
@@ -199,14 +200,18 @@ namespace Discord.API
if (_gatewayClient != null) if (_gatewayClient != null)
_gatewayClient.SetCancelToken(_connectCancelToken.Token); _gatewayClient.SetCancelToken(_connectCancelToken.Token);
var gatewayResponse = await GetGatewayAsync().ConfigureAwait(false); if (_gatewayUrl == null)
var url = $"{gatewayResponse.Url}?v={DiscordConfig.GatewayAPIVersion}&encoding={DiscordConfig.GatewayEncoding}"; {
await _gatewayClient.ConnectAsync(url).ConfigureAwait(false); var gatewayResponse = await GetGatewayAsync().ConfigureAwait(false);
_gatewayUrl = $"{gatewayResponse.Url}?v={DiscordConfig.GatewayAPIVersion}&encoding={DiscordConfig.GatewayEncoding}";
}
await _gatewayClient.ConnectAsync(_gatewayUrl).ConfigureAwait(false);
ConnectionState = ConnectionState.Connected; ConnectionState = ConnectionState.Connected;
} }
catch (Exception) catch (Exception)
{ {
_gatewayUrl = null; //Uncache in case the gateway url changed
await DisconnectInternalAsync().ConfigureAwait(false); await DisconnectInternalAsync().ConfigureAwait(false);
throw; throw;
} }