Example #1
0
        private void DisconnectBotsInternal(List <Bot> connectedBots, int disconnectCount)
        {
            MainConsole.Instance.Output("Disconnecting {0} bots", null, disconnectCount);

            int disconnectedBots = 0;

            for (int i = connectedBots.Count - 1; i >= 0; i--)
            {
                if (disconnectedBots >= disconnectCount)
                {
                    break;
                }

                Bot thisBot = connectedBots[i];

                if (thisBot.ConnectionState == ConnectionState.Connected)
                {
                    ThreadPool.QueueUserWorkItem(o => thisBot.Disconnect());
                    disconnectedBots++;
                }
            }

            lock (BotConnectingStateChangeObject)
                BotConnectingState = BotManagerBotConnectingState.Ready;
        }
Example #2
0
        private void DisconnectBotsInternal(List <Bot> connectedBots, int disconnectCount)
        {
            ConnectingBots = false;

            MainConsole.Instance.OutputFormat("Disconnecting {0} bots", disconnectCount);

            int disconnectedBots = 0;

            for (int i = connectedBots.Count - 1; i >= 0; i--)
            {
                if (disconnectedBots >= disconnectCount)
                {
                    break;
                }

                Bot thisBot = connectedBots[i];

                if (thisBot.ConnectionState == ConnectionState.Connected)
                {
                    ThreadPool.QueueUserWorkItem(o => thisBot.Disconnect());
                    disconnectedBots++;
                }
            }

            DisconnectingBots = false;
        }
Example #3
0
        private void HandleDisconnect(string module, string[] cmd)
        {
            lock (m_bots)
            {
                int botsToDisconnect;
                int connectedBots = m_bots.Count(b => b.ConnectionState == ConnectionState.Connected);

                if (cmd.Length == 1)
                {
                    botsToDisconnect = connectedBots;
                }
                else
                {
                    if (!ConsoleUtil.TryParseConsoleNaturalInt(MainConsole.Instance, cmd[1], out botsToDisconnect))
                    {
                        return;
                    }

                    botsToDisconnect = Math.Min(botsToDisconnect, connectedBots);
                }

                DisconnectingBots = true;

                MainConsole.Instance.OutputFormat("Disconnecting {0} bots", botsToDisconnect);

                int disconnectedBots = 0;

                for (int i = m_bots.Count - 1; i >= 0; i--)
                {
                    if (disconnectedBots >= botsToDisconnect)
                    {
                        break;
                    }

                    Bot thisBot = m_bots[i];

                    if (thisBot.ConnectionState == ConnectionState.Connected)
                    {
                        Util.FireAndForget(o => thisBot.Disconnect());
                        disconnectedBots++;
                    }
                }

                DisconnectingBots = false;
            }
        }