Go back to disconnecting bots in parallel since serially is too slow.

However, disconnecting now halts any current connection, with the possible exception of the single currently connecting bot.
0.8-extended
Justin Clark-Casey (justincc) 2014-08-05 01:37:10 +01:00 committed by Justin Clark-Casey
parent 04cb9bc4bf
commit 4443e05d5d
1 changed files with 5 additions and 3 deletions

View File

@ -349,7 +349,7 @@ namespace pCampBot
foreach (Bot bot in botsToConnect) foreach (Bot bot in botsToConnect)
{ {
if (DisconnectingBots) if (!ConnectingBots)
{ {
MainConsole.Instance.Output( MainConsole.Instance.Output(
"[BOT MANAGER]: Aborting bot connection due to user-initiated disconnection"); "[BOT MANAGER]: Aborting bot connection due to user-initiated disconnection");
@ -629,6 +629,8 @@ namespace pCampBot
botsToDisconnectCount = Math.Min(botsToDisconnectCount, connectedBots.Count); botsToDisconnectCount = Math.Min(botsToDisconnectCount, connectedBots.Count);
} }
DisconnectingBots = true;
Thread disconnectBotThread = new Thread(o => DisconnectBotsInternal(connectedBots, botsToDisconnectCount)); Thread disconnectBotThread = new Thread(o => DisconnectBotsInternal(connectedBots, botsToDisconnectCount));
disconnectBotThread.Name = "Bots disconnection thread"; disconnectBotThread.Name = "Bots disconnection thread";
@ -637,7 +639,7 @@ namespace pCampBot
private void DisconnectBotsInternal(List<Bot> connectedBots, int disconnectCount) private void DisconnectBotsInternal(List<Bot> connectedBots, int disconnectCount)
{ {
DisconnectingBots = true; ConnectingBots = false;
MainConsole.Instance.OutputFormat("Disconnecting {0} bots", disconnectCount); MainConsole.Instance.OutputFormat("Disconnecting {0} bots", disconnectCount);
@ -652,7 +654,7 @@ namespace pCampBot
if (thisBot.ConnectionState == ConnectionState.Connected) if (thisBot.ConnectionState == ConnectionState.Connected)
{ {
thisBot.Disconnect(); ThreadPool.QueueUserWorkItem(o => thisBot.Disconnect());
disconnectedBots++; disconnectedBots++;
} }
} }