Beispiel #1
0
        public async Task <CQConnectionStatus> ConnectAsync()
        {
            try
            {
                this.m_client = new MinimistTelnetClient(this.m_ip.Address.ToString(), this.m_ip.Port)
                {
                    Timeout = 1000 / 30
                };
                App.ApplicationExit += this.ApplicationExitHandler;

                Log("Starting query");
                return(await this.CaptureChatMessages());
            }
            catch (Exception e)
            {
                MinimistTelnetClient client = this.m_client;
                TS3ClientQuery.LastException = e;
                client?.Close();

                Log("Exception Occurred: " + e.Message);
                if (e is SocketException ex && ex.ErrorCode == 10061)
                {
                    return(CQConnectionStatus.WaitingForServer);
                }
                return(CQConnectionStatus.ConnectionReset);
            }
            finally
            {
                this.ApplicationExitHandler(null);
                App.ApplicationExit -= this.ApplicationExitHandler;
            }
        }
Beispiel #2
0
        private void ApplicationExitHandler(ExitEventArgs e)
        {
            MinimistTelnetClient client = Interlocked.Exchange(ref this.m_client, null);

            if (client != null && client.IsConnected)
            {
                client.Close();
            }
        }