feat: Upgrades networking to use io_uring. (#2315)
> [!IMPORTANT] > **Breaking Changes** > - DecodePacket and EncodePacket delegates replaced with IClientEncryption interface > - NetState.Connection (Socket) replaced with internal RingSocket management > - NetState.RecvPipe and NetState.SendPipe removed (buffers managed internally) ## Summary Upgrades the networking stack from PollGroup-based I/O to io_uring, significantly improving I/O performance on Linux. This also adds native client encryption support for encrypted UO clients. ## Major Changes io_uring Networking Architecture - Replaced PollGroup with IORingGroup for async socket I/O operations - Removed Pipe.cs (mirrored ring buffer) and TcpServer.cs in favor of RingSocketManager - Added NetState.Network.cs - centralized network infrastructure handling accept, recv, send, and disconnect completions - Added SocketHelper.cs - platform-specific socket utilities for raw socket handle operations (getpeername, getsockname) - Buffer management now handled by RingSocketManager with configurable slab allocation ### Client Encryption Support - Added full encryption stack in Network/Encryption/: - EncryptionConfig.cs - configurable encryption modes (None, Unencrypted, Encrypted, Both) - EncryptionManager.cs - encryption detection and initialization for login/game packets - LoginEncryption.cs - handles login packet encryption with version-derived keys - GameEncryption.cs - handles game server encryption using Twofish - TwofishEngine.cs - optimized Twofish block cipher implementation - LoginKeys.cs - encryption key table for client versions - IClientEncryption.cs - interface for client encryption implementations ### NetState Improvements - Replaced Socket Connection with RingSocket _socket for managed socket lifecycle - Changed from GCHandle polling to event-based completion processing - Disconnect handling now properly waits for pending sends to flush - Simplified connecting socket management using lazy queue removal ### Configuration - New settings: network.encryptionMode and network.encryptionDebug - Encryption mode flags: Unencrypted, Encrypted, or Both ### Dependencies - Replaced PollGroup NuGet package with IORingGroup - Linux requires liburing-dev / liburing-devel package ### Test plan - Verify server starts and accepts connections on Linux with io_uring - Verify server starts and accepts connections on Windows (fallback to IOCP) - Test unencrypted client connections (ClassicUO with encryption disabled) - Test encrypted client connections if available - Verify graceful disconnect flushes pending data - Confirm CI builds pass on all target platforms
This commit is contained in:
parent
91a553b0bc
commit
3c0d6cb9d6
70 changed files with 2227 additions and 1468 deletions
|
|
@ -1,8 +1,8 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Net.Sockets;
|
||||
using Server.Accounting;
|
||||
using Server.Network;
|
||||
using Server.Tests.Network;
|
||||
using Xunit;
|
||||
|
||||
namespace Server.Tests.Maps;
|
||||
|
|
@ -356,7 +356,7 @@ public class ClientEnumeratorTests
|
|||
{
|
||||
var map = Map.Felucca;
|
||||
var center = new Point3D(900, 900, 0);
|
||||
var range = 5;
|
||||
const int range = 5;
|
||||
|
||||
var clients = new (NetState, Mobile)[3];
|
||||
try
|
||||
|
|
@ -456,8 +456,8 @@ public class ClientEnumeratorTests
|
|||
|
||||
private static (NetState, Mobile) CreateClientWithMobile(Map map, Point3D location)
|
||||
{
|
||||
var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
|
||||
var ns = new NetState(socket);
|
||||
// Create test NetState with real socket and buffers
|
||||
var ns = PacketTestUtilities.CreateTestNetState();
|
||||
|
||||
// Assign a mock account to avoid null reference issues
|
||||
ns.Account = new MockAccount();
|
||||
|
|
@ -533,16 +533,16 @@ public class ClientEnumeratorTests
|
|||
}
|
||||
}
|
||||
|
||||
private static void DeleteAll((NetState, Mobile)[] clients)
|
||||
private static void DeleteAll((NetState state, Mobile m)[] clients)
|
||||
{
|
||||
for (var i = 0; i < clients.Length; i++)
|
||||
{
|
||||
if (clients[i].Item1 != null)
|
||||
if (clients[i].state != null)
|
||||
{
|
||||
clients[i].Item1.Mobile = null;
|
||||
clients[i].Item1.Disconnect("Test cleanup");
|
||||
clients[i].state.Mobile = null;
|
||||
clients[i].state.Dispose();
|
||||
}
|
||||
clients[i].Item2?.Delete();
|
||||
clients[i].m?.Delete();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ using Server.Json;
|
|||
using System.Text.Json.Serialization;
|
||||
using System.Text.Json;
|
||||
|
||||
namespace Server.Tests.Tests.Maps
|
||||
namespace Server.Tests.Maps
|
||||
{
|
||||
public class MapSelectionTests
|
||||
{
|
||||
|
|
|
|||
|
|
@ -92,7 +92,7 @@ public class AccountPacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendChangeCharacter(account);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -105,7 +105,7 @@ public class AccountPacketTests
|
|||
|
||||
ns.SendClientVersionRequest();
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -117,7 +117,7 @@ public class AccountPacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendCharacterDeleteResult(DeleteResultType.BadRequest);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -129,7 +129,7 @@ public class AccountPacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendPopupMessage(PMMessage.LoginSyncError);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -156,7 +156,7 @@ public class AccountPacketTests
|
|||
var expected = new SupportedFeatures(ns).Compile();
|
||||
ns.SendSupportedFeature();
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -177,7 +177,7 @@ public class AccountPacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendLoginConfirmation(m);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -189,7 +189,7 @@ public class AccountPacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendLoginComplete();
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -214,7 +214,7 @@ public class AccountPacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendCharacterListUpdate(account);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -248,7 +248,7 @@ public class AccountPacketTests
|
|||
|
||||
ns.SendCharacterList();
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -281,7 +281,7 @@ public class AccountPacketTests
|
|||
|
||||
ns.SendCharacterList();
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -294,7 +294,7 @@ public class AccountPacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendAccountLoginRejected(reason);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -313,7 +313,7 @@ public class AccountPacketTests
|
|||
|
||||
ns.SendAccountLoginAck();
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -321,7 +321,7 @@ public class AccountPacketTests
|
|||
public void TestPlayServerAck()
|
||||
{
|
||||
var si = new ServerInfo("Test Server", 0, TimeZoneInfo.Local, IPEndPoint.Parse("127.0.0.1"));
|
||||
var authId = 0x123456;
|
||||
const int authId = 0x123456;
|
||||
|
||||
var expected = new PlayServerAck(si, authId).Compile();
|
||||
|
||||
|
|
@ -329,7 +329,7 @@ public class AccountPacketTests
|
|||
|
||||
ns.SendPlayServerAck(si, authId);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ public class CombatPacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendSwing(attacker, defender);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -29,7 +29,7 @@ public class CombatPacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendSetWarMode(warmode);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -43,7 +43,7 @@ public class CombatPacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendChangeCombatant(serial);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,7 +7,6 @@ namespace Server.Tests.Network;
|
|||
[Collection("Sequential Server Tests")]
|
||||
public class ContainerPacketTests
|
||||
{
|
||||
|
||||
[Fact]
|
||||
public void TestContainerDisplay()
|
||||
{
|
||||
|
|
@ -19,7 +18,7 @@ public class ContainerPacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendDisplayContainer(serial, gumpId);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -35,7 +34,7 @@ public class ContainerPacketTests
|
|||
ns.ProtocolChanges = ns.ProtocolChanges | ProtocolChanges.ContainerGridLines | ProtocolChanges.HighSeas;
|
||||
ns.SendDisplayContainer(serial, gumpId);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -49,7 +48,7 @@ public class ContainerPacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendDisplaySpellbook(serial);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -64,7 +63,7 @@ public class ContainerPacketTests
|
|||
ns.ProtocolChanges = ns.ProtocolChanges | ProtocolChanges.ContainerGridLines | ProtocolChanges.HighSeas;
|
||||
ns.SendDisplaySpellbook(serial);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -85,7 +84,7 @@ public class ContainerPacketTests
|
|||
ns.SendSpellbookContent(serial, graphic, offset, content);
|
||||
ObjectPropertyList.Enabled = opl;
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -102,7 +101,7 @@ public class ContainerPacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendSpellbookContent(serial, graphic, offset, content);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -120,7 +119,7 @@ public class ContainerPacketTests
|
|||
ns.ProtocolChanges |= ProtocolChanges.ContainerGridLines;
|
||||
ns.SendSpellbookContent(serial, graphic, offset, content);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -135,7 +134,7 @@ public class ContainerPacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendContainerContentUpdate(item);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -151,7 +150,7 @@ public class ContainerPacketTests
|
|||
ns.ProtocolChanges |= ProtocolChanges.ContainerGridLines;
|
||||
ns.SendContainerContentUpdate(item);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -172,7 +171,7 @@ public class ContainerPacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendContainerContent(m, cont);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -194,7 +193,7 @@ public class ContainerPacketTests
|
|||
ns.ProtocolChanges |= ProtocolChanges.ContainerGridLines;
|
||||
ns.SendContainerContent(m, cont);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ public class DamagePacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendDamage(serial, inputAmount);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -32,7 +32,7 @@ public class DamagePacketTests
|
|||
|
||||
ns.SendDamage(serial, inputAmount);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ public class EffectPackets
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendSoundEffect(soundID, p);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -99,7 +99,7 @@ public class EffectPackets
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendScreenEffect(screenType);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ public class EquipmentPacketTests
|
|||
new List<EquipInfoAttribute>(info.Attributes)
|
||||
);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -59,7 +59,7 @@ public class EquipmentPacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendEquipUpdate(item);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ public class GumpPacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendCloseGump(typeId, buttonId);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -32,7 +32,7 @@ public class GumpPacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendDisplaySignGump(gumpSerial, gumpId, unknownString, caption);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -46,7 +46,7 @@ public class GumpPacketTests
|
|||
var expected = gump.Compile(ns).Compile();
|
||||
ns.SendGump(gump);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -65,7 +65,7 @@ public class GumpPacketTests
|
|||
var expected = gump.Compile(ns).Compile();
|
||||
ns.SendGump(gump);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ public class ItemPacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendWorldItem(item);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -74,7 +74,7 @@ public class ItemPacketTests
|
|||
ns.ProtocolChanges = ProtocolChanges.StygianAbyss;
|
||||
ns.SendWorldItem(item);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -110,7 +110,7 @@ public class ItemPacketTests
|
|||
ns.ProtocolChanges = ProtocolChanges.StygianAbyss | ProtocolChanges.HighSeas;
|
||||
ns.SendWorldItem(item);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ public class LightPacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendGlobalLightLevel(lightLevel);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -29,7 +29,7 @@ public class LightPacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendPersonalLightLevel(serial, lightLevel);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ public class MapPatchesTests
|
|||
|
||||
ns.SendMapPatches();
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -27,7 +27,7 @@ public class MapPatchesTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendInvalidMap();
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -42,7 +42,7 @@ public class MapPatchesTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendMapChange(map);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ public class MenuPacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendDisplayItemListMenu(menu);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -67,7 +67,7 @@ public class MenuPacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendDisplayQuestionMenu(menu);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -95,7 +95,7 @@ public class MenuPacketTests
|
|||
|
||||
ns.SendDisplayContextMenu(menu);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ public class MessageTests
|
|||
args
|
||||
);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -87,7 +87,7 @@ public class MessageTests
|
|||
args
|
||||
);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -125,7 +125,7 @@ public class MessageTests
|
|||
text
|
||||
);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -165,7 +165,7 @@ public class MessageTests
|
|||
text
|
||||
);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -180,7 +180,7 @@ public class MessageTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendFollowMessage(serial, serial2);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -195,7 +195,7 @@ public class MessageTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendHelpResponse(s, text);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -215,9 +215,8 @@ public class MessageTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendPrompt(prompt);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ public class MobilePacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendDeathAnimation(killed, corpse);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -32,7 +32,7 @@ public class MobilePacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendBondedStatus(petSerial, bonded);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -52,7 +52,7 @@ public class MobilePacketTests
|
|||
|
||||
ns.SendMobileMoving(m, noto);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -70,7 +70,7 @@ public class MobilePacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendMobileName(m);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -102,7 +102,7 @@ public class MobilePacketTests
|
|||
delay
|
||||
);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -128,7 +128,7 @@ public class MobilePacketTests
|
|||
delay
|
||||
);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -148,7 +148,7 @@ public class MobilePacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendMobileHealthbar(m, Healthbar.Poison);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -169,7 +169,7 @@ public class MobilePacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendMobileHealthbar(m, Healthbar.Yellow);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -192,7 +192,7 @@ public class MobilePacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendMobileStatusCompact(m, canBeRenamed);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -225,7 +225,7 @@ public class MobilePacketTests
|
|||
var expected = new MobileStatus(beholder, beheld, ns).Compile();
|
||||
ns.SendMobileStatus(beholder, beheld);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -263,7 +263,7 @@ public class MobilePacketTests
|
|||
var expected = new MobileStatusExtended(m, ns).Compile();
|
||||
ns.SendMobileStatus(m, m);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
Core.Expansion = oldExpansion;
|
||||
expansionInfo.MobileStatusVersion = oldVersion;
|
||||
|
|
@ -284,7 +284,7 @@ public class MobilePacketTests
|
|||
var expected = new MobileUpdate(m, ns.StygianAbyss).Compile();
|
||||
ns.SendMobileUpdate(m);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -339,7 +339,7 @@ public class MobilePacketTests
|
|||
var expected = new MobileIncoming(ns, beholder, beheld).Compile();
|
||||
ns.SendMobileIncoming(beholder, beheld);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -356,7 +356,7 @@ public class MobilePacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendMobileHits(m);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -373,7 +373,7 @@ public class MobilePacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendMobileHits(m, true);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -390,7 +390,7 @@ public class MobilePacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendMobileMana(m);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -407,7 +407,7 @@ public class MobilePacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendMobileMana(m, true);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -424,7 +424,7 @@ public class MobilePacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendMobileStam(m);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -441,7 +441,7 @@ public class MobilePacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendMobileStam(m, true);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -462,7 +462,7 @@ public class MobilePacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendMobileAttributes(m);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -483,7 +483,7 @@ public class MobilePacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendMobileAttributes(m, true);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -496,7 +496,7 @@ public class MobilePacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendRemoveEntity(e);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ public class MovementPacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendSpeedControl((SpeedControlSetting)speedControl);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -30,7 +30,7 @@ public class MovementPacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendMovePlayer(d);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -47,7 +47,7 @@ public class MovementPacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendMovementRej(seq, m);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -64,7 +64,7 @@ public class MovementPacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendMovementAck(seq, m);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ public class PlayerPacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendStatLockInfo(m);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -38,7 +38,7 @@ public class PlayerPacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendChangeUpdateRange((byte)range);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -50,7 +50,7 @@ public class PlayerPacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendDeathStatus();
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -64,7 +64,7 @@ public class PlayerPacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendDisplayProfile((Serial)serial, header, body, footer);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -78,7 +78,7 @@ public class PlayerPacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendLiftReject(reason);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -90,7 +90,7 @@ public class PlayerPacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendLogoutAck();
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -105,7 +105,7 @@ public class PlayerPacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendWeather((byte)type, (byte)density, (byte)temp);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -120,7 +120,7 @@ public class PlayerPacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendServerChange(p, map);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -135,7 +135,7 @@ public class PlayerPacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendSequence(num);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -151,7 +151,7 @@ public class PlayerPacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendLaunchBrowser(uri);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -175,7 +175,7 @@ public class PlayerPacketTests
|
|||
itemId, hue, amount
|
||||
);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -189,7 +189,7 @@ public class PlayerPacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendSeasonChange((byte)season, playSound);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -204,7 +204,7 @@ public class PlayerPacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendDisplayPaperdoll((Serial)m, title, warmode, canLift);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -219,7 +219,7 @@ public class PlayerPacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendPlayMusic(music);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -233,7 +233,7 @@ public class PlayerPacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendScrollMessage(type, tip ,text);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -247,7 +247,7 @@ public class PlayerPacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendCurrentTime(date);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -261,7 +261,7 @@ public class PlayerPacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendPathfindMessage(p);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -276,7 +276,7 @@ public class PlayerPacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendPingAck(ping);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -291,7 +291,7 @@ public class PlayerPacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendDisplayHuePicker(huePicker.Serial, huePicker.ItemID);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ public class SecureTradePacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendDisplaySecureTrade(m, firstCont, secondCont, name);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -37,7 +37,7 @@ public class SecureTradePacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendCloseSecureTrade(cont);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -55,7 +55,7 @@ public class SecureTradePacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendUpdateSecureTrade(cont, first, second);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -70,7 +70,7 @@ public class SecureTradePacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendUpdateSecureTrade(cont, flag, gold, plat);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -88,7 +88,7 @@ public class SecureTradePacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendSecureTradeEquip(itemInCont, m);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -108,7 +108,7 @@ public class SecureTradePacketTests
|
|||
|
||||
ns.SendSecureTradeEquip(itemInCont, m);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ public class TargetPacketsTests
|
|||
ns.ProtocolChanges |= ProtocolChanges.HighSeas;
|
||||
ns.SendMultiTargetReq(t);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -60,7 +60,7 @@ public class TargetPacketsTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendMultiTargetReq(t);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -71,7 +71,7 @@ public class TargetPacketsTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendCancelTarget();
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -84,7 +84,7 @@ public class TargetPacketsTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendTargetReq(t);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ public class VendorBuyPacketTests
|
|||
|
||||
ns.SendVendorBuyContent(buyStates);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -48,7 +48,7 @@ public class VendorBuyPacketTests
|
|||
|
||||
ns.SendDisplayBuyList(vendor.Serial);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -72,7 +72,7 @@ public class VendorBuyPacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendVendorBuyList(vendor, buyStates);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -87,7 +87,7 @@ public class VendorBuyPacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendEndVendorBuy(vendor.Serial);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ public class VendorSellPacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendVendorSellList(vendor.Serial, sellStates);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -45,7 +45,7 @@ public class VendorSellPacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendEndVendorSell(vendor.Serial);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ public class VirtualHairPacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendHairEquipUpdatePacket(m, (uint)m.Hair.VirtualSerial, m.Hair.ItemId, m.Hair.Hue, Layer.Hair);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
|
||||
|
|
@ -35,7 +35,7 @@ public class VirtualHairPacketTests
|
|||
using var ns = PacketTestUtilities.CreateTestNetState();
|
||||
ns.SendRemoveHairPacket((uint) m.Hair.VirtualSerial);
|
||||
|
||||
var result = ns.SendPipe.Reader.AvailableToRead();
|
||||
var result = ns.SendBuffer.GetReadSpan();
|
||||
AssertThat.Equal(result, expected);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,89 +0,0 @@
|
|||
using System;
|
||||
using Server.Network;
|
||||
using Xunit;
|
||||
|
||||
namespace Server.Tests.Network;
|
||||
|
||||
public class PipeTests
|
||||
{
|
||||
[Fact]
|
||||
public void TestSizeMatchesPageSize()
|
||||
{
|
||||
var pageSize = (uint)Environment.SystemPageSize;
|
||||
using var pipe = new Pipe(128);
|
||||
|
||||
// Available memory should be in increments of system page size minus one.
|
||||
Assert.Equal(pageSize, pipe.Size);
|
||||
Assert.Equal(pageSize - 1, (uint)pipe.Writer.AvailableToWrite().Length);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void TestWriteReadsWrap()
|
||||
{
|
||||
var pageSize = (uint)Environment.SystemPageSize;
|
||||
using var pipe = new Pipe(pageSize);
|
||||
|
||||
var span = pipe.Writer.AvailableToWrite();
|
||||
|
||||
for (var i = 0; i < span.Length; i++)
|
||||
{
|
||||
span[i] = (byte)(i % 256);
|
||||
}
|
||||
|
||||
pipe.Writer.Advance((uint)(span.Length - 10));
|
||||
|
||||
var readBytes = pipe.Reader.AvailableToRead();
|
||||
|
||||
// Make a sequence from what we expect.
|
||||
Span<byte> seq = new byte[readBytes.Length];
|
||||
for (var i = 0; i < readBytes.Length; i++)
|
||||
{
|
||||
seq[i] = (byte)(i % 256);
|
||||
}
|
||||
|
||||
AssertThat.Equal(readBytes, seq);
|
||||
|
||||
// Advance by half. Expected writer length should be half + 10
|
||||
pipe.Reader.Advance(pageSize / 2);
|
||||
|
||||
span = pipe.Writer.AvailableToWrite();
|
||||
|
||||
var halfStart = pageSize / 2 + 10;
|
||||
|
||||
Assert.Equal(halfStart, (uint)span.Length);
|
||||
|
||||
seq = new byte[20];
|
||||
|
||||
for (var i = 0; i < 10; i++)
|
||||
{
|
||||
seq[i] = (byte)(0xF5 + i);
|
||||
}
|
||||
|
||||
// The last element, the sentinel, is excluded.
|
||||
// The wrap around values start at 11
|
||||
for (var i = 11; i < 20; i++)
|
||||
{
|
||||
seq[i] = (byte)(i - 11);
|
||||
}
|
||||
|
||||
// Test the uncommitted overwritten memory and shifted offset to make sure the ring is working
|
||||
AssertThat.Equal(span[..20], seq[..20]);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void TestWriteReadMatches()
|
||||
{
|
||||
var pipe = new Pipe(16);
|
||||
|
||||
var reader = pipe.Reader;
|
||||
var writer = pipe.Writer;
|
||||
|
||||
for (uint i = 0; i < 16; i++)
|
||||
{
|
||||
writer.Advance(i);
|
||||
|
||||
Assert.Equal((int)i, reader.AvailableToRead().Length);
|
||||
reader.Advance(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,37 +0,0 @@
|
|||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Threading;
|
||||
using Server.Network;
|
||||
using Xunit;
|
||||
|
||||
namespace Server.Tests.Network;
|
||||
|
||||
public class PollGroupTests
|
||||
{
|
||||
[Fact]
|
||||
public void TestPollGroup()
|
||||
{
|
||||
// var group = new KQueuePollGroup();
|
||||
var nss = new NetState[2048];
|
||||
var handles = new IntPtr[2048];
|
||||
for (var i = 0; i < nss.Length; i++)
|
||||
{
|
||||
nss[i] = PacketTestUtilities.CreateTestNetState();
|
||||
handles[i] = (IntPtr)nss[i].Handle;
|
||||
}
|
||||
|
||||
GC.AddMemoryPressure(10000000000);
|
||||
GC.Collect();
|
||||
GC.RemoveMemoryPressure(10000000000);
|
||||
GC.Collect();
|
||||
|
||||
Thread.Sleep(1000);
|
||||
|
||||
for (var i = 0; i < nss.Length; i++)
|
||||
{
|
||||
Assert.Equal(nss[i].Handle, (GCHandle)handles[i]);
|
||||
}
|
||||
|
||||
// group.Dispose();
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue