コード例 #1
0
ファイル: TwitchClient.cs プロジェクト: hasaki/WinterBot
        public void Timeout(string user, int duration = 600)
        {
            StartTimeoutThread();

            if (duration <= 0)
            {
                duration = 1;
            }

            int delay = TimeoutDelay;

            if (delay <= 0)
            {
                TimeoutRaw(user, duration);
            }
            else if (delay <= 150)
            {
                Thread.Sleep(delay);
                TimeoutRaw(user, duration);
            }
            else
            {
                var request = new TimeoutRequest(this, user, duration);
                m_timeouts.Add(request);
            }
        }
コード例 #2
0
ファイル: TwitchClient.cs プロジェクト: hasaki/WinterBot
        private void ProcessNext(TimeoutRequest evt)
        {
            int delay = TimeoutDelay;

            delay -= (int)evt.Created.Elapsed().TotalMilliseconds;
            if (delay > 0)
            {
                Thread.Sleep(delay);
            }
            evt.Execute();
        }
コード例 #3
0
ファイル: TwitchClient.cs プロジェクト: hasaki/WinterBot
        private void TimeoutThread(object obj)
        {
            while (!m_shutdown)
            {
                TimeoutRequest evt;
                if (!m_timeouts.TryTake(out evt))
                {
                    Thread.Sleep(100);
                    continue;
                }

                ProcessNext(evt);

                while (evt.IsBan)
                {
                    TimeoutRequest next = null;
                    for (int i = 0; i < 15; i++)
                    {
                        Thread.Sleep(100);
                        if (m_shutdown)
                        {
                            return;
                        }

                        if (m_timeouts.TryTake(out next))
                        {
                            evt.Execute();
                            ProcessNext(next);
                            break;
                        }
                    }

                    if (next == null)
                    {
                        evt.Execute();
                        break;
                    }

                    evt = next;
                }
            }
        }
コード例 #4
0
ファイル: TwitchClient.cs プロジェクト: hasaki/WinterBot
        public void Ban(string user)
        {
            StartTimeoutThread();

            int delay = TimeoutDelay;

            if (delay <= 0)
            {
                BanRaw(user);
            }
            else if (delay <= 150)
            {
                Thread.Sleep(delay);
                BanRaw(user);
            }
            else
            {
                var request = new TimeoutRequest(this, user, -1);
                m_timeouts.Add(request);
            }
        }
コード例 #5
0
ファイル: TwitchClient.cs プロジェクト: NitroXenon/WinterBot
        private void ProcessNext(TimeoutRequest evt)
        {
            int delay = TimeoutDelay;

            delay -= (int)evt.Created.Elapsed().TotalMilliseconds;
            if (delay > 0)
                Thread.Sleep(delay);
            evt.Execute();
        }
コード例 #6
0
ファイル: TwitchClient.cs プロジェクト: NitroXenon/WinterBot
        public void Timeout(string user, int duration = 600)
        {
            StartTimeoutThread();

            if (duration <= 0)
                duration = 1;

            int delay = TimeoutDelay;
            if (delay <= 0)
            {
                TimeoutRaw(user, duration);
            }
            else if (delay <= 150)
            {
                Thread.Sleep(delay);
                TimeoutRaw(user, duration);
            }
            else
            {
                var request = new TimeoutRequest(this, user, duration);
                m_timeouts.Add(request);
            }
        }
コード例 #7
0
ファイル: TwitchClient.cs プロジェクト: NitroXenon/WinterBot
        public void Ban(string user)
        {
            StartTimeoutThread();

            int delay = TimeoutDelay;
            if (delay <= 0)
            {
                BanRaw(user);
            }
            else if (delay <= 150)
            {
                Thread.Sleep(delay);
                BanRaw(user);
            }
            else
            {
                var request = new TimeoutRequest(this, user, -1);
                m_timeouts.Add(request);
            }
        }
コード例 #8
0
ファイル: TwitchClient.cs プロジェクト: KnightRobby/WinterBot
        private void ProcessNext(TimeoutRequest evt)
        {
            int delay = TimeoutDelay;

            delay -= (int)evt.Created.Elapsed().TotalMilliseconds;
            if (delay > 0)
                Thread.Sleep(delay);
            evt.Execute();
            Console.WriteLine("[{0}] ProcessingBan {1} msec", DateTime.Now, evt.Created.Elapsed().TotalMilliseconds);
        }