Browse Source

'Added connection event `Connecting`'

pull/806/head
Radka Janek 8 years ago
parent
commit
5fdfee89ce
5 changed files with 18 additions and 0 deletions
  1. +6
    -0
      src/Discord.Net.Rpc/DiscordRpcClient.Events.cs
  2. +1
    -0
      src/Discord.Net.Rpc/DiscordRpcClient.cs
  3. +4
    -0
      src/Discord.Net.WebSocket/ConnectionManager.cs
  4. +6
    -0
      src/Discord.Net.WebSocket/DiscordSocketClient.Events.cs
  5. +1
    -0
      src/Discord.Net.WebSocket/DiscordSocketClient.cs

+ 6
- 0
src/Discord.Net.Rpc/DiscordRpcClient.Events.cs View File

@@ -6,6 +6,12 @@ namespace Discord.Rpc
public partial class DiscordRpcClient public partial class DiscordRpcClient
{ {
//General //General
public event Func<Task> Connecting
{
add { _connectingEvent.Add(value); }
remove { _connectingEvent.Remove(value); }
}
private readonly AsyncEvent<Func<Task>> _connectingEvent = new AsyncEvent<Func<Task>>();
public event Func<Task> Connected public event Func<Task> Connected
{ {
add { _connectedEvent.Add(value); } add { _connectedEvent.Add(value); }


+ 1
- 0
src/Discord.Net.Rpc/DiscordRpcClient.cs View File

@@ -40,6 +40,7 @@ namespace Discord.Rpc
_rpcLogger = LogManager.CreateLogger("RPC"); _rpcLogger = LogManager.CreateLogger("RPC");
_connection = new ConnectionManager(_stateLock, _rpcLogger, config.ConnectionTimeout, _connection = new ConnectionManager(_stateLock, _rpcLogger, config.ConnectionTimeout,
ConnectAsync, DisconnectAsync, x => ApiClient.Disconnected += x); ConnectAsync, DisconnectAsync, x => ApiClient.Disconnected += x);
_connection.Connecting += () => _connectingEvent.InvokeAsync();
_connection.Connected += () => _connectedEvent.InvokeAsync(); _connection.Connected += () => _connectedEvent.InvokeAsync();
_connection.Disconnected += (ex, recon) => _disconnectedEvent.InvokeAsync(ex); _connection.Disconnected += (ex, recon) => _disconnectedEvent.InvokeAsync(ex);




+ 4
- 0
src/Discord.Net.WebSocket/ConnectionManager.cs View File

@@ -8,6 +8,8 @@ namespace Discord
{ {
internal class ConnectionManager internal class ConnectionManager
{ {
public event Func<Task> Connecting { add { _connectingEvent.Add(value); } remove { _connectingEvent.Remove(value); } }
private readonly AsyncEvent<Func<Task>> _connectingEvent = new AsyncEvent<Func<Task>>();
public event Func<Task> Connected { add { _connectedEvent.Add(value); } remove { _connectedEvent.Remove(value); } } public event Func<Task> Connected { add { _connectedEvent.Add(value); } remove { _connectedEvent.Remove(value); } }
private readonly AsyncEvent<Func<Task>> _connectedEvent = new AsyncEvent<Func<Task>>(); private readonly AsyncEvent<Func<Task>> _connectedEvent = new AsyncEvent<Func<Task>>();
public event Func<Exception, bool, Task> Disconnected { add { _disconnectedEvent.Add(value); } remove { _disconnectedEvent.Remove(value); } } public event Func<Exception, bool, Task> Disconnected { add { _disconnectedEvent.Add(value); } remove { _disconnectedEvent.Remove(value); } }
@@ -123,6 +125,8 @@ namespace Discord


try try
{ {
await _connectingEvent.InvokeAsync().ConfigureAwait(false);

var readyPromise = new TaskCompletionSource<bool>(); var readyPromise = new TaskCompletionSource<bool>();
_readyPromise = readyPromise; _readyPromise = readyPromise;




+ 6
- 0
src/Discord.Net.WebSocket/DiscordSocketClient.Events.cs View File

@@ -7,6 +7,12 @@ namespace Discord.WebSocket
public partial class DiscordSocketClient public partial class DiscordSocketClient
{ {
//General //General
public event Func<Task> Connecting
{
add { _connectingEvent.Add(value); }
remove { _connectingEvent.Remove(value); }
}
private readonly AsyncEvent<Func<Task>> _connectingEvent = new AsyncEvent<Func<Task>>();
public event Func<Task> Connected public event Func<Task> Connected
{ {
add { _connectedEvent.Add(value); } add { _connectedEvent.Add(value); }


+ 1
- 0
src/Discord.Net.WebSocket/DiscordSocketClient.cs View File

@@ -92,6 +92,7 @@ namespace Discord.WebSocket
_gatewayLogger = LogManager.CreateLogger(ShardId == 0 && TotalShards == 1 ? "Gateway" : $"Shard #{ShardId}"); _gatewayLogger = LogManager.CreateLogger(ShardId == 0 && TotalShards == 1 ? "Gateway" : $"Shard #{ShardId}");
_connection = new ConnectionManager(_stateLock, _gatewayLogger, config.ConnectionTimeout, _connection = new ConnectionManager(_stateLock, _gatewayLogger, config.ConnectionTimeout,
ConnectAsync, DisconnectAsync, x => ApiClient.Disconnected += x); ConnectAsync, DisconnectAsync, x => ApiClient.Disconnected += x);
_connection.Connecting += () => TimedInvokeAsync(_connectingEvent, nameof(Connecting));
_connection.Connected += () => TimedInvokeAsync(_connectedEvent, nameof(Connected)); _connection.Connected += () => TimedInvokeAsync(_connectedEvent, nameof(Connected));
_connection.Disconnected += (ex, recon) => TimedInvokeAsync(_disconnectedEvent, nameof(Disconnected), ex); _connection.Disconnected += (ex, recon) => TimedInvokeAsync(_disconnectedEvent, nameof(Disconnected), ex);




Loading…
Cancel
Save