Skip to content

Commit 43f1737

Browse files
committed
refactor steam network handling
1 parent 2c5aa6c commit 43f1737

File tree

4 files changed

+145
-188
lines changed

4 files changed

+145
-188
lines changed

ASFAchievementManager.sln

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ Global
1717
{D0352FDB-487E-488A-9B07-2D4F19425A39}.Debug|Any CPU.Build.0 = Debug|Any CPU
1818
{D0352FDB-487E-488A-9B07-2D4F19425A39}.Release|Any CPU.ActiveCfg = Release|Any CPU
1919
{D0352FDB-487E-488A-9B07-2D4F19425A39}.Release|Any CPU.Build.0 = Release|Any CPU
20-
{930573F9-3DA0-41E8-8E4E-C0476BA8F99C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
21-
{930573F9-3DA0-41E8-8E4E-C0476BA8F99C}.Debug|Any CPU.Build.0 = Debug|Any CPU
20+
{930573F9-3DA0-41E8-8E4E-C0476BA8F99C}.Debug|Any CPU.ActiveCfg = Release|Any CPU
21+
{930573F9-3DA0-41E8-8E4E-C0476BA8F99C}.Debug|Any CPU.Build.0 = Release|Any CPU
2222
{930573F9-3DA0-41E8-8E4E-C0476BA8F99C}.Release|Any CPU.ActiveCfg = Release|Any CPU
2323
{930573F9-3DA0-41E8-8E4E-C0476BA8F99C}.Release|Any CPU.Build.0 = Release|Any CPU
2424
EndGlobalSection

ASFAchievementManager/ASFAchievementManager.cs

Lines changed: 8 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,7 @@ public sealed class ASFAchievementManager : IBotSteamClient, IBotMessage, IBotCo
1717
public string Name => "ASF Achievement Manager";
1818
public Version Version => typeof(ASFAchievementManager).Assembly.GetName().Version;
1919

20-
public void OnLoaded() {
21-
ASF.ArchiLogger.LogGenericInfo("ASF Achievement Manager Plugin by Ryzhehvost, powered by ginger cats");
22-
}
20+
public void OnLoaded() => ASF.ArchiLogger.LogGenericInfo("ASF Achievement Manager Plugin by Ryzhehvost, powered by ginger cats");
2321

2422
public async Task<string> OnBotMessage([NotNull] Bot bot, ulong steamID, [NotNull] string message) {
2523
if (!bot.HasPermission(steamID, BotConfig.EPermission.Master)) {
@@ -59,9 +57,7 @@ public async Task<string> OnBotMessage([NotNull] Bot bot, ulong steamID, [NotNul
5957
}
6058
}
6159

62-
public async Task<string> OnBotCommand([NotNull] Bot bot, ulong steamID, [NotNull] string message, string[] args) {
63-
return await OnBotMessage(bot, steamID, string.Join(" ", args)).ConfigureAwait(false);
64-
}
60+
public async Task<string> OnBotCommand([NotNull] Bot bot, ulong steamID, [NotNull] string message, string[] args) => await OnBotMessage(bot, steamID, string.Join(" ", args)).ConfigureAwait(false);
6561

6662
public void OnBotSteamCallbacksInit([NotNull] Bot bot, [NotNull] CallbackManager callbackManager) { }
6763

@@ -91,11 +87,10 @@ private static async Task<string> ResponseAchievementList(Bot bot, string appids
9187
gamesToGetAchievements.Add(gameID);
9288
}
9389

94-
//maybe just do it with foreach? It won't be parallel anyway.
95-
List<string> responses = new List<string>();
96-
foreach (uint appID in gamesToGetAchievements) {
97-
responses.Add(await AchievementHandler.GetAchievements(bot, appID).ConfigureAwait(false));
98-
}
90+
91+
IList<string> results = await Utilities.InParallel(gamesToGetAchievements.Select(appID => Task.Run<string>(() => AchievementHandler.GetAchievements(bot, appID)))).ConfigureAwait(false);
92+
93+
List<string> responses = new List<string>(results.Where(result => !string.IsNullOrEmpty(result)));
9994

10095
return responses.Count > 0 ? bot.Commands.FormatBotResponse(string.Join(Environment.NewLine, responses)) : null;
10196

@@ -123,8 +118,7 @@ private static async Task<string> ResponseAchievementList(string botNames, strin
123118

124119

125120
private static async Task<string> ResponseAchievementSet(Bot bot, string appid, string AchievementNumbers, bool set = true) {
126-
uint appId;
127-
if (!uint.TryParse(appid, out appId)) {
121+
if (!uint.TryParse(appid, out uint appId)) {
128122
return bot.Commands.FormatBotResponse(string.Format(Strings.ErrorIsInvalid, nameof(appId)));
129123
}
130124

@@ -148,7 +142,7 @@ private static async Task<string> ResponseAchievementSet(Bot bot, string appid,
148142
return bot.Commands.FormatBotResponse(string.Format(Strings.ErrorIsEmpty, "Achievements list"));
149143
}
150144
}
151-
return bot.Commands.FormatBotResponse(await AchievementHandler.SetAchievements(bot, appId, achievements,set).ConfigureAwait(false));
145+
return bot.Commands.FormatBotResponse(await Task.Run<string>(()=>AchievementHandler.SetAchievements(bot, appId, achievements, set)).ConfigureAwait(false));
152146
}
153147

154148
private static async Task<string> ResponseAchievementSet(string botNames, string appid, string AchievementNumbers, bool set = true) {
@@ -165,48 +159,7 @@ private static async Task<string> ResponseAchievementSet(string botNames, string
165159

166160
return responses.Count > 0 ? string.Join(Environment.NewLine, responses) : null;
167161
}
168-
/*
169-
private static async Task<string> ResponseAchievementReset(Bot bot, string appid, string AchievementNumbers) {
170-
uint appId;
171-
if (!uint.TryParse(appid, out appId)) {
172-
return bot.Commands.FormatBotResponse(string.Format(Strings.ErrorIsInvalid, nameof(appId)));
173-
}
174-
175-
if (!AchievementHandlers.TryGetValue(bot, out AchievementHandler AchievementHandler)) {
176-
return bot.Commands.FormatBotResponse(string.Format(Strings.ErrorIsEmpty, nameof(AchievementHandlers)));
177-
}
178-
179-
HashSet<uint> achievements = new HashSet<uint>();
180-
181-
string[] achievementStrings = AchievementNumbers.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
182-
183-
foreach (string achievement in achievementStrings) {
184-
if (!uint.TryParse(achievement, out uint achievementNumber) || (achievementNumber == 0)) {
185-
return bot.Commands.FormatBotResponse(string.Format(Strings.ErrorParsingObject, nameof(achievement)));
186-
}
187-
188-
achievements.Add(achievementNumber);
189-
}
190-
191-
return bot.Commands.FormatBotResponse(await AchievementHandler.SetAchievements(bot, appId, achievements,false).ConfigureAwait(false));
192-
193-
}
194162

195-
private static async Task<string> ResponseAchievementReset(string botNames, string appid, string AchievementNumbers) {
196-
197-
HashSet<Bot> bots = Bot.GetBots(botNames);
198-
199-
if ((bots == null) || (bots.Count == 0)) {
200-
return Commands.FormatStaticResponse(string.Format(Strings.BotNotFound, botNames));
201-
}
202-
203-
IList<string> results = await Utilities.InParallel(bots.Select(bot => ResponseAchievementReset(bot, appid, AchievementNumbers))).ConfigureAwait(false);
204-
205-
List<string> responses = new List<string>(results.Where(result => !string.IsNullOrEmpty(result)));
206-
207-
return responses.Count > 0 ? string.Join(Environment.NewLine, responses) : null;
208-
}
209-
*/
210163
}
211164

212165
}

0 commit comments

Comments
 (0)