From 2afef1480e1e0215a1f0922ba801be63262d452f Mon Sep 17 00:00:00 2001 From: PJB3005 Date: Tue, 20 Jan 2026 19:01:56 +0100 Subject: [PATCH] Add debug code to slow down transfer connections --- .../Transfer/ClientTransferImplWebSocket.cs | 8 +++++++- .../Network/Transfer/ClientTransferManager.cs | 14 ++++++++++++-- Robust.Shared/CVars.cs | 6 ++++++ 3 files changed, 25 insertions(+), 3 deletions(-) diff --git a/Robust.Client/Network/Transfer/ClientTransferImplWebSocket.cs b/Robust.Client/Network/Transfer/ClientTransferImplWebSocket.cs index 8b03c0af5..e2ff94ccb 100644 --- a/Robust.Client/Network/Transfer/ClientTransferImplWebSocket.cs +++ b/Robust.Client/Network/Transfer/ClientTransferImplWebSocket.cs @@ -11,15 +11,18 @@ namespace Robust.Client.Network.Transfer; internal sealed class ClientTransferImplWebSocket : TransferImplWebSocket { private readonly (string EndpointUrl, byte[] Key) _info; + private readonly bool _slow; public ClientTransferImplWebSocket( (string EndpointUrl, byte[] Key) info, ISawmill sawmill, BaseTransferManager parent, - INetChannel channel) + INetChannel channel, + bool slow) : base(sawmill, parent, channel) { _info = info; + _slow = slow; } public override async Task ClientInit(CancellationToken cancel) @@ -28,6 +31,9 @@ internal sealed class ClientTransferImplWebSocket : TransferImplWebSocket clientWs.Options.SetRequestHeader(KeyHeaderName, Convert.ToBase64String(_info.Key)); clientWs.Options.SetRequestHeader(UserIdHeaderName, Channel.UserId.ToString()); + if (_slow) + await Task.Delay(2000, cancel); + await clientWs.ConnectAsync(new Uri(_info.EndpointUrl), cancel); WebSocket = clientWs; diff --git a/Robust.Client/Network/Transfer/ClientTransferManager.cs b/Robust.Client/Network/Transfer/ClientTransferManager.cs index 97e690531..781679d9e 100644 --- a/Robust.Client/Network/Transfer/ClientTransferManager.cs +++ b/Robust.Client/Network/Transfer/ClientTransferManager.cs @@ -1,7 +1,9 @@ using System; using System.IO; using System.Threading.Tasks; +using Robust.Shared; using Robust.Shared.Asynchronous; +using Robust.Shared.Configuration; using Robust.Shared.Log; using Robust.Shared.Network; using Robust.Shared.Network.Messages.Transfer; @@ -12,6 +14,7 @@ namespace Robust.Client.Network.Transfer; internal sealed class ClientTransferManager : BaseTransferManager, ITransferManager { private readonly IClientNetManager _netManager; + private readonly IConfigurationManager _cfg; private BaseTransferImpl? _transferImpl; public event Action? ClientHandshakeComplete; @@ -19,10 +22,12 @@ internal sealed class ClientTransferManager : BaseTransferManager, ITransferMana internal ClientTransferManager( IClientNetManager netManager, ILogManager logManager, - ITaskManager taskManager) + ITaskManager taskManager, + IConfigurationManager cfg) : base(logManager, NetMessageAccept.Client, taskManager) { _netManager = netManager; + _cfg = cfg; } public Stream StartTransfer(INetChannel channel, TransferStartInfo startInfo) @@ -48,7 +53,12 @@ internal sealed class ClientTransferManager : BaseTransferManager, ITransferMana BaseTransferImpl impl; if (message.HttpInfo is { } httpInfo) { - impl = new ClientTransferImplWebSocket(httpInfo, Sawmill, this, message.MsgChannel); + impl = new ClientTransferImplWebSocket( + httpInfo, + Sawmill, + this, + message.MsgChannel, + _cfg.GetCVar(CVars.TransferArtificialDelay)); } else { diff --git a/Robust.Shared/CVars.cs b/Robust.Shared/CVars.cs index 1635a948b..ad0c8a4ee 100644 --- a/Robust.Shared/CVars.cs +++ b/Robust.Shared/CVars.cs @@ -441,6 +441,12 @@ namespace Robust.Shared public static readonly CVarDef TransferStreamLimit = CVarDef.Create("transfer.stream_limit", 10, CVar.SERVERONLY); + /// + /// Artificially delay transfer operations to simulate slow network. Debug option. + /// + internal static readonly CVarDef TransferArtificialDelay = + CVarDef.Create("transfer.artificial_delay", false); + /** * SUS */