internal virtual DataWebSocket CreateDataSocket() { var socket = new DataWebSocket(this); socket.Connected += (s, e) => { if (_state == (int)DiscordClientState.Connecting) CompleteConnect(); } ; socket.Disconnected += async (s, e) => { RaiseDisconnected(e); if (e.WasUnexpected) await socket.Reconnect(_token); }; if (!_config.VoiceOnly) { socket.LogMessage += (s, e) => RaiseOnLog(e.Severity, LogMessageSource.DataWebSocket, e.Message); if (_config.LogLevel >= LogMessageSeverity.Info) { socket.Connected += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.DataWebSocket, "Connected"); socket.Disconnected += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.DataWebSocket, "Disconnected"); } } socket.ReceivedEvent += (s, e) => OnReceivedEvent(e); return socket; }
/// <summary> Initializes a new instance of the DiscordClient class. </summary> public DiscordSimpleClient(DiscordClientConfig config = null) { _config = config ?? new DiscordClientConfig(); _config.Lock(); _enableVoice = config.VoiceMode != DiscordVoiceMode.Disabled && !config.EnableVoiceMultiserver; _state = (int)DiscordClientState.Disconnected; _cancelToken = new CancellationToken(true); _disconnectedEvent = new ManualResetEvent(true); _connectedEvent = new ManualResetEventSlim(false); _dataSocket = CreateDataSocket(); if (_enableVoice) _voiceSocket = CreateVoiceSocket(); }