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; }
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; }
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; } }