Add debug code to slow down transfer connections

This commit is contained in:
PJB3005
2026-01-20 19:01:56 +01:00
parent 76189579c7
commit 2afef1480e
3 changed files with 25 additions and 3 deletions

View File

@@ -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;

View File

@@ -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
{

View File

@@ -441,6 +441,12 @@ namespace Robust.Shared
public static readonly CVarDef<int> TransferStreamLimit =
CVarDef.Create("transfer.stream_limit", 10, CVar.SERVERONLY);
/// <summary>
/// Artificially delay transfer operations to simulate slow network. Debug option.
/// </summary>
internal static readonly CVarDef<bool> TransferArtificialDelay =
CVarDef.Create("transfer.artificial_delay", false);
/**
* SUS
*/