From 7bd2ce650c1994f58c8ec3c965b6de70de491278 Mon Sep 17 00:00:00 2001 From: JustArchi Date: Thu, 27 Apr 2017 01:57:04 +0200 Subject: [PATCH] Misc code review --- ArchiSteamFarm/Bot.cs | 50 +++++++++++++++++------------------ ArchiSteamFarm/CardsFarmer.cs | 14 +++++----- ArchiSteamFarm/Program.cs | 17 +++++++++++- ArchiSteamFarm/Trading.cs | 2 +- GUI/Program.cs | 17 +++++++++++- 5 files changed, 65 insertions(+), 35 deletions(-) diff --git a/ArchiSteamFarm/Bot.cs b/ArchiSteamFarm/Bot.cs index 689246335..6c5c338cf 100755 --- a/ArchiSteamFarm/Bot.cs +++ b/ArchiSteamFarm/Bot.cs @@ -271,8 +271,8 @@ namespace ArchiSteamFarm { continue; } - ICollection results; IEnumerable> tasks = confirmations.Select(BotDatabase.MobileAuthenticator.GetConfirmationDetails); + ICollection results; switch (Program.GlobalConfig.OptimizationMode) { case GlobalConfig.EOptimizationMode.MinMemoryUsage: @@ -652,7 +652,7 @@ namespace ArchiSteamFarm { case "!REJOINCHAT": return ResponseRejoinChat(steamID); case "!RESUME": - return await ResponseResume(steamID).ConfigureAwait(false); + return ResponseResume(steamID); case "!RESTART": return ResponseRestart(steamID); case "!SA": @@ -1931,8 +1931,8 @@ namespace ArchiSteamFarm { return IsOwner(steamID) ? FormatStaticResponse(string.Format(Strings.BotNotFound, botNames)) : null; } - ICollection results; IEnumerable> tasks = bots.Select(bot => bot.Response2FA(steamID)); + ICollection results; switch (Program.GlobalConfig.OptimizationMode) { case GlobalConfig.EOptimizationMode.MinMemoryUsage: @@ -1987,8 +1987,8 @@ namespace ArchiSteamFarm { return IsOwner(steamID) ? FormatStaticResponse(string.Format(Strings.BotNotFound, botNames)) : null; } - ICollection results; IEnumerable> tasks = bots.Select(bot => bot.Response2FAConfirm(steamID, confirm)); + ICollection results; switch (Program.GlobalConfig.OptimizationMode) { case GlobalConfig.EOptimizationMode.MinMemoryUsage: @@ -2095,8 +2095,8 @@ namespace ArchiSteamFarm { return IsOwner(steamID) ? FormatStaticResponse(string.Format(Strings.BotNotFound, botNames)) : null; } - ICollection results; IEnumerable> tasks = bots.Select(bot => bot.ResponseAddLicense(steamID, games)); + ICollection results; switch (Program.GlobalConfig.OptimizationMode) { case GlobalConfig.EOptimizationMode.MinMemoryUsage: @@ -2149,8 +2149,8 @@ namespace ArchiSteamFarm { return IsOwner(steamID) ? FormatStaticResponse(string.Format(Strings.BotNotFound, botNames)) : null; } - ICollection results; IEnumerable> tasks = bots.Select(bot => Task.Run(() => bot.ResponseBlacklist(steamID))); + ICollection results; switch (Program.GlobalConfig.OptimizationMode) { case GlobalConfig.EOptimizationMode.MinMemoryUsage: @@ -2218,8 +2218,8 @@ namespace ArchiSteamFarm { return IsOwner(steamID) ? FormatStaticResponse(string.Format(Strings.BotNotFound, botNames)) : null; } - ICollection results; IEnumerable> tasks = bots.Select(bot => Task.Run(() => bot.ResponseBlacklistAdd(steamID, targetsText))); + ICollection results; switch (Program.GlobalConfig.OptimizationMode) { case GlobalConfig.EOptimizationMode.MinMemoryUsage: @@ -2249,8 +2249,8 @@ namespace ArchiSteamFarm { return IsOwner(steamID) ? FormatStaticResponse(string.Format(Strings.BotNotFound, botNames)) : null; } - ICollection results; IEnumerable> tasks = bots.Select(bot => Task.Run(() => bot.ResponseBlacklistRemove(steamID, targetsText))); + ICollection results; switch (Program.GlobalConfig.OptimizationMode) { case GlobalConfig.EOptimizationMode.MinMemoryUsage: @@ -2347,8 +2347,8 @@ namespace ArchiSteamFarm { return IsOwner(steamID) ? FormatStaticResponse(string.Format(Strings.BotNotFound, botNames)) : null; } - ICollection results; IEnumerable> tasks = bots.Select(bot => bot.ResponseFarm(steamID)); + ICollection results; switch (Program.GlobalConfig.OptimizationMode) { case GlobalConfig.EOptimizationMode.MinMemoryUsage: @@ -2409,8 +2409,8 @@ namespace ArchiSteamFarm { return IsOwner(steamID) ? FormatStaticResponse(string.Format(Strings.BotNotFound, botNames)) : null; } - ICollection results; IEnumerable> tasks = bots.Select(bot => Task.Run(() => bot.ResponseInput(steamID, propertyName, inputValue))); + ICollection results; switch (Program.GlobalConfig.OptimizationMode) { case GlobalConfig.EOptimizationMode.MinMemoryUsage: @@ -2489,8 +2489,8 @@ namespace ArchiSteamFarm { return IsOwner(steamID) ? FormatStaticResponse(string.Format(Strings.BotNotFound, botNames)) : null; } - ICollection results; IEnumerable> tasks = bots.Select(bot => bot.ResponseLoot(steamID)); + ICollection results; switch (Program.GlobalConfig.OptimizationMode) { case GlobalConfig.EOptimizationMode.MinMemoryUsage: @@ -2534,8 +2534,8 @@ namespace ArchiSteamFarm { return IsOwner(steamID) ? FormatStaticResponse(string.Format(Strings.BotNotFound, botNames)) : null; } - ICollection results; IEnumerable> tasks = bots.Select(bot => Task.Run(() => bot.ResponseLootSwitch(steamID))); + ICollection results; switch (Program.GlobalConfig.OptimizationMode) { case GlobalConfig.EOptimizationMode.MinMemoryUsage: @@ -2595,8 +2595,8 @@ namespace ArchiSteamFarm { return IsOwner(steamID) ? FormatStaticResponse(string.Format(Strings.BotNotFound, botNames)) : null; } - ICollection results; IEnumerable> tasks = bots.Select(bot => bot.ResponseNickname(steamID, nickname)); + ICollection results; switch (Program.GlobalConfig.OptimizationMode) { case GlobalConfig.EOptimizationMode.MinMemoryUsage: @@ -2683,8 +2683,8 @@ namespace ArchiSteamFarm { return IsOwner(steamID) ? FormatStaticResponse(string.Format(Strings.BotNotFound, botNames)) : null; } - ICollection results; IEnumerable> tasks = bots.Select(bot => bot.ResponseOwns(steamID, query)); + ICollection results; switch (Program.GlobalConfig.OptimizationMode) { case GlobalConfig.EOptimizationMode.MinMemoryUsage: @@ -2727,8 +2727,8 @@ namespace ArchiSteamFarm { return IsOwner(steamID) ? FormatStaticResponse(string.Format(Strings.BotNotFound, botNames)) : null; } - ICollection results; IEnumerable> tasks = bots.Select(bot => Task.Run(() => bot.ResponsePassword(steamID))); + ICollection results; switch (Program.GlobalConfig.OptimizationMode) { case GlobalConfig.EOptimizationMode.MinMemoryUsage: @@ -2790,8 +2790,8 @@ namespace ArchiSteamFarm { return IsOwner(steamID) ? FormatStaticResponse(string.Format(Strings.BotNotFound, botNames)) : null; } - ICollection results; IEnumerable> tasks = bots.Select(bot => bot.ResponsePause(steamID, sticky)); + ICollection results; switch (Program.GlobalConfig.OptimizationMode) { case GlobalConfig.EOptimizationMode.MinMemoryUsage: @@ -2879,8 +2879,8 @@ namespace ArchiSteamFarm { return IsOwner(steamID) ? FormatStaticResponse(string.Format(Strings.BotNotFound, botNames)) : null; } - ICollection results; IEnumerable> tasks = bots.Select(bot => bot.ResponsePlay(steamID, games)); + ICollection results; switch (Program.GlobalConfig.OptimizationMode) { case GlobalConfig.EOptimizationMode.MinMemoryUsage: @@ -3093,8 +3093,8 @@ namespace ArchiSteamFarm { return IsOwner(steamID) ? FormatStaticResponse(string.Format(Strings.BotNotFound, botNames)) : null; } - ICollection results; IEnumerable> tasks = bots.Select(bot => bot.ResponseRedeem(steamID, message, redeemFlags)); + ICollection results; switch (Program.GlobalConfig.OptimizationMode) { case GlobalConfig.EOptimizationMode.MinMemoryUsage: @@ -3138,8 +3138,8 @@ namespace ArchiSteamFarm { return IsOwner(steamID) ? FormatStaticResponse(string.Format(Strings.BotNotFound, botNames)) : null; } - ICollection results; IEnumerable> tasks = bots.Select(bot => Task.Run(() => bot.ResponseRejoinChat(steamID))); + ICollection results; switch (Program.GlobalConfig.OptimizationMode) { case GlobalConfig.EOptimizationMode.MinMemoryUsage: @@ -3177,7 +3177,7 @@ namespace ArchiSteamFarm { return FormatStaticResponse(Strings.Done); } - private async Task ResponseResume(ulong steamID) { + private string ResponseResume(ulong steamID) { if (steamID == 0) { ArchiLogger.LogNullError(nameof(steamID)); return null; @@ -3196,7 +3196,7 @@ namespace ArchiSteamFarm { } StopFamilySharingInactivityTimer(); - await CardsFarmer.Resume(true).ConfigureAwait(false); + CardsFarmer.Resume(true).Forget(); return FormatBotResponse(Strings.BotAutomaticIdlingNowResumed); } @@ -3211,8 +3211,8 @@ namespace ArchiSteamFarm { return IsOwner(steamID) ? FormatStaticResponse(string.Format(Strings.BotNotFound, botNames)) : null; } + IEnumerable> tasks = bots.Select(bot => Task.Run(() => bot.ResponseResume(steamID))); ICollection results; - IEnumerable> tasks = bots.Select(bot => bot.ResponseResume(steamID)); switch (Program.GlobalConfig.OptimizationMode) { case GlobalConfig.EOptimizationMode.MinMemoryUsage: @@ -3261,8 +3261,8 @@ namespace ArchiSteamFarm { return IsOwner(steamID) ? FormatStaticResponse(string.Format(Strings.BotNotFound, botNames)) : null; } - ICollection results; IEnumerable> tasks = bots.Select(bot => Task.Run(() => bot.ResponseStart(steamID))); + ICollection results; switch (Program.GlobalConfig.OptimizationMode) { case GlobalConfig.EOptimizationMode.MinMemoryUsage: @@ -3334,8 +3334,8 @@ namespace ArchiSteamFarm { return IsOwner(steamID) ? FormatStaticResponse(string.Format(Strings.BotNotFound, botNames)) : null; } - ICollection results; IEnumerable> tasks = bots.Select(bot => Task.Run(() => bot.ResponseStatus(steamID))); + ICollection results; switch (Program.GlobalConfig.OptimizationMode) { case GlobalConfig.EOptimizationMode.MinMemoryUsage: @@ -3394,8 +3394,8 @@ namespace ArchiSteamFarm { return IsOwner(steamID) ? FormatStaticResponse(string.Format(Strings.BotNotFound, botNames)) : null; } - ICollection results; IEnumerable> tasks = bots.Select(bot => Task.Run(() => bot.ResponseStop(steamID))); + ICollection results; switch (Program.GlobalConfig.OptimizationMode) { case GlobalConfig.EOptimizationMode.MinMemoryUsage: diff --git a/ArchiSteamFarm/CardsFarmer.cs b/ArchiSteamFarm/CardsFarmer.cs index bd0ed01d5..641943f8a 100755 --- a/ArchiSteamFarm/CardsFarmer.cs +++ b/ArchiSteamFarm/CardsFarmer.cs @@ -740,15 +740,15 @@ namespace ArchiSteamFarm { GamesToFarm.ClearAndTrim(); - List backgroundTasks = new List(); - Task task = CheckPage(htmlDocument); + List tasks = new List(); + Task mainTask = CheckPage(htmlDocument); switch (Program.GlobalConfig.OptimizationMode) { case GlobalConfig.EOptimizationMode.MinMemoryUsage: - await task.ConfigureAwait(false); + await mainTask.ConfigureAwait(false); break; default: - backgroundTasks.Add(task); + tasks.Add(mainTask); break; } @@ -766,15 +766,15 @@ namespace ArchiSteamFarm { for (byte page = 2; page <= maxPages; page++) { // We need a copy of variable being passed when in for loops, as loop will proceed before our task is launched byte currentPage = page; - backgroundTasks.Add(CheckPage(currentPage)); + tasks.Add(CheckPage(currentPage)); } break; } } - if (backgroundTasks.Count > 0) { - await Task.WhenAll(backgroundTasks).ConfigureAwait(false); + if (tasks.Count > 0) { + await Task.WhenAll(tasks).ConfigureAwait(false); } SortGamesToFarm(); diff --git a/ArchiSteamFarm/Program.cs b/ArchiSteamFarm/Program.cs index 3f78b83f9..b113209fc 100644 --- a/ArchiSteamFarm/Program.cs +++ b/ArchiSteamFarm/Program.cs @@ -311,8 +311,23 @@ namespace ArchiSteamFarm { WCF.StopServer(); + if (Bot.Bots.Count == 0) { + return true; + } + IEnumerable tasks = Bot.Bots.Values.Select(bot => Task.Run(() => bot.Stop())); - await Task.WhenAny(Task.WhenAll(tasks), Task.Delay(10 * 1000)); + + switch (GlobalConfig.OptimizationMode) { + case GlobalConfig.EOptimizationMode.MinMemoryUsage: + foreach (Task task in tasks) { + await Task.WhenAny(task, Task.Delay(WebBrowser.MaxRetries * 1000)).ConfigureAwait(false); + } + + break; + default: + await Task.WhenAny(Task.WhenAll(tasks), Task.Delay(Bot.Bots.Count * WebBrowser.MaxRetries * 1000)).ConfigureAwait(false); + break; + } return true; } diff --git a/ArchiSteamFarm/Trading.cs b/ArchiSteamFarm/Trading.cs index 21755e14a..05ba1e8a3 100644 --- a/ArchiSteamFarm/Trading.cs +++ b/ArchiSteamFarm/Trading.cs @@ -85,8 +85,8 @@ namespace ArchiSteamFarm { } } - ICollection results; IEnumerable> tasks = tradeOffers.Select(ParseTrade); + ICollection results; switch (Program.GlobalConfig.OptimizationMode) { case GlobalConfig.EOptimizationMode.MinMemoryUsage: diff --git a/GUI/Program.cs b/GUI/Program.cs index 79c5fe342..3f85c0b4c 100644 --- a/GUI/Program.cs +++ b/GUI/Program.cs @@ -97,8 +97,23 @@ namespace ArchiSteamFarm { ShutdownSequenceInitialized = true; + if (Bot.Bots.Count == 0) { + return true; + } + IEnumerable tasks = Bot.Bots.Values.Select(bot => Task.Run(() => bot.Stop())); - await Task.WhenAny(Task.WhenAll(tasks), Task.Delay(10 * 1000)); + + switch (GlobalConfig.OptimizationMode) { + case GlobalConfig.EOptimizationMode.MinMemoryUsage: + foreach (Task task in tasks) { + await Task.WhenAny(task, Task.Delay(WebBrowser.MaxRetries * 1000)).ConfigureAwait(false); + } + + break; + default: + await Task.WhenAny(Task.WhenAll(tasks), Task.Delay(Bot.Bots.Count * WebBrowser.MaxRetries * 1000)).ConfigureAwait(false); + break; + } return true; }