From 834fe94712f641e8aa9ba6751701b8042a924795 Mon Sep 17 00:00:00 2001 From: Berserker Date: Mon, 23 Feb 2026 06:08:41 +0100 Subject: [PATCH] Request Datapackage as individual responses --- .../ArchipelagoSessionFixture.cs | 2 +- .../DataPackageFileSystemCacheFixture.cs | 16 +++++++++------- .../DataPackage/DataPackageCache.cs | 7 +++---- 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/Archipelago.MultiClient.Net.Tests/ArchipelagoSessionFixture.cs b/Archipelago.MultiClient.Net.Tests/ArchipelagoSessionFixture.cs index 9b034658..a18f85f4 100644 --- a/Archipelago.MultiClient.Net.Tests/ArchipelagoSessionFixture.cs +++ b/Archipelago.MultiClient.Net.Tests/ArchipelagoSessionFixture.cs @@ -72,7 +72,7 @@ public void Should_send_connect_after_retrieving_data_package() Received.InOrder(() => { - socket.Received().SendPacket(Arg.Any()); + socket.Received().SendMultiplePackets(Arg.Any()); socket.Received().SendPacket(Arg.Any()); }); diff --git a/Archipelago.MultiClient.Net.Tests/DataPackageFileSystemCacheFixture.cs b/Archipelago.MultiClient.Net.Tests/DataPackageFileSystemCacheFixture.cs index 9c9bbb8c..10efd98f 100644 --- a/Archipelago.MultiClient.Net.Tests/DataPackageFileSystemCacheFixture.cs +++ b/Archipelago.MultiClient.Net.Tests/DataPackageFileSystemCacheFixture.cs @@ -49,8 +49,8 @@ public void Should_request_data_package_when_no_local_cache_is_available() Games = new []{ "One" } }); - socket.Received().SendPacket(Arg.Is(p => - p.Games.Length == 1 && p.Games[0] == "One" + socket.Received().SendMultiplePackets(Arg.Is(p => + p.Length == 1 && p[0].Games.Length == 1 && p[0].Games[0] == "One" )); } @@ -87,7 +87,7 @@ public void Should_not_request_data_when_local_contains_a_file_with_same_checksu socket.PacketReceived += Raise.Event(roomInfo); - socket.DidNotReceive().SendPacket(Arg.Any()); + socket.DidNotReceive().SendMultiplePackets(Arg.Any()); } [Test] @@ -127,8 +127,10 @@ public void Should_only_request_data_for_games_that_a_have_different_checksum_th socket.PacketReceived += Raise.Event(roomInfo); - socket.Received().SendPacket(Arg.Is(p => - p.Games.Length == 2 && p.Games[0] == "Two" && p.Games[1] == "Three" + socket.Received().SendMultiplePackets(Arg.Is(p => + p.Length == 2 + && p[0].Games.Length == 1 && p[0].Games[0] == "Two" + && p[1].Games.Length == 1 && p[1].Games[0] == "Three" )); } @@ -257,8 +259,8 @@ public void Should_request_data_package_for_games_the_server_fails_to_send_the_v socket.PacketReceived += Raise.Event(roomInfo); - socket.Received().SendPacket(Arg.Is(p => - p.Games.Length == 1 && p.Games[0] == "Two" + socket.Received().SendMultiplePackets(Arg.Is(p => + p.Length == 1 && p[0].Games.Length == 1 && p[0].Games[0] == "Two" )); } diff --git a/Archipelago.MultiClient.Net/DataPackage/DataPackageCache.cs b/Archipelago.MultiClient.Net/DataPackage/DataPackageCache.cs index 6d994444..84a2b8af 100644 --- a/Archipelago.MultiClient.Net/DataPackage/DataPackageCache.cs +++ b/Archipelago.MultiClient.Net/DataPackage/DataPackageCache.cs @@ -41,10 +41,9 @@ void Socket_PacketReceived(ArchipelagoPacketBase packet) var invalidated = GetCacheInvalidatedGamesByChecksum(roomInfoPacket); if (invalidated.Any()) { - socket.SendPacket(new GetDataPackagePacket - { - Games = invalidated.ToArray() - }); + socket.SendMultiplePackets( + invalidated.Select(game => new GetDataPackagePacket { Games = new[] { game } }).ToArray() + ); } break; case DataPackagePacket packagePacket: