Example #1
0
        /// <summary> Creates a new RPC discord client. </summary>
        public DiscordRpcClient(DiscordRpcConfig config)
            : base(config, CreateApiClient(config))
        {
            ConnectionTimeout = config.ConnectionTimeout;
            _rpcLogger        = LogManager.CreateLogger("RPC");

            _serializer = new JsonSerializer {
                ContractResolver = new DiscordContractResolver()
            };
            _serializer.Error += (s, e) =>
            {
                _rpcLogger.WarningAsync(e.ErrorContext.Error).GetAwaiter().GetResult();
                e.ErrorContext.Handled = true;
            };

            ApiClient.SentRpcMessage += async opCode => await _rpcLogger.DebugAsync($"Sent {opCode}").ConfigureAwait(false);

            ApiClient.ReceivedRpcEvent += ProcessMessageAsync;
            ApiClient.Disconnected     += async ex =>
            {
                if (ex != null)
                {
                    await _rpcLogger.WarningAsync($"Connection Closed", ex).ConfigureAwait(false);
                    await StartReconnectAsync(ex).ConfigureAwait(false);
                }
                else
                {
                    await _rpcLogger.WarningAsync($"Connection Closed").ConfigureAwait(false);
                }
            };
        }
Example #2
0
        /// <summary> Creates a new RPC discord client. </summary>
        public DiscordRpcClient(string clientId, string origin, DiscordRpcConfig config)
            : base(config, CreateApiClient(clientId, origin, config))
        {
            _stateLock     = new SemaphoreSlim(1, 1);
            _authorizeLock = new SemaphoreSlim(1, 1);
            _rpcLogger     = LogManager.CreateLogger("RPC");
            _connection    = new ConnectionManager(_stateLock, _rpcLogger, config.ConnectionTimeout,
                                                   OnConnectingAsync, OnDisconnectingAsync, x => ApiClient.Disconnected += x);
            _connection.Connected    += () => _connectedEvent.InvokeAsync();
            _connection.Disconnected += (ex, recon) => _disconnectedEvent.InvokeAsync(ex);

            _serializer = new JsonSerializer {
                ContractResolver = new DiscordContractResolver()
            };
            _serializer.Error += (s, e) =>
            {
                _rpcLogger.WarningAsync(e.ErrorContext.Error).GetAwaiter().GetResult();
                e.ErrorContext.Handled = true;
            };

            ApiClient.SentRpcMessage += async opCode => await _rpcLogger.DebugAsync($"Sent {opCode}").ConfigureAwait(false);

            ApiClient.ReceivedRpcEvent += ProcessMessageAsync;
        }
Example #3
0
 private static API.DiscordRpcApiClient CreateApiClient(DiscordRpcConfig config)
 => new API.DiscordRpcApiClient(config.ClientId, config.Origin, config.RestClientProvider, config.WebSocketProvider, requestQueue: new RequestQueue());
Example #4
0
 private static API.DiscordRpcApiClient CreateApiClient(string clientId, string origin, DiscordRpcConfig config)
 => new API.DiscordRpcApiClient(clientId, DiscordRestConfig.UserAgent, origin, config.RestClientProvider, config.WebSocketProvider);