mirror of
https://github.com/space-wizards/RobustToolbox.git
synced 2026-02-14 19:29:36 +01:00
* WebSocket-based data transfer system * Move resource downloads/uploads to the new transfer system Should drastically increase the permitted practical size * Transfer impl for Lidgren * Async impl for receive stream * Use unbounded channel for Lidgren * Add metrics * More comments * Add serverside stream limit to avoid being a DoS vector * Fix tests * Oops forgot to actually implement sequence channels in NetMessage * Doc comment for NetMessage.SequenceChannel * Release notes
45 lines
1.1 KiB
C#
45 lines
1.1 KiB
C#
using Lidgren.Network;
|
|
using Robust.Shared.Network.Transfer;
|
|
using Robust.Shared.Serialization;
|
|
|
|
namespace Robust.Shared.Network.Messages.Transfer;
|
|
|
|
internal sealed class MsgTransferInit : NetMessage
|
|
{
|
|
public (string EndpointUrl, byte[] Key)? HttpInfo;
|
|
|
|
public override NetDeliveryMethod DeliveryMethod => NetDeliveryMethod.ReliableOrdered;
|
|
|
|
public override void ReadFromBuffer(NetIncomingMessage buffer, IRobustSerializer serializer)
|
|
{
|
|
var httpAvailable = buffer.ReadBoolean();
|
|
if (!httpAvailable)
|
|
{
|
|
HttpInfo = null;
|
|
return;
|
|
}
|
|
|
|
buffer.SkipPadBits();
|
|
var endpoint = buffer.ReadString();
|
|
var key = buffer.ReadBytes(TransferImplWebSocket.RandomKeyBytes);
|
|
|
|
HttpInfo = (endpoint, key);
|
|
}
|
|
|
|
public override void WriteToBuffer(NetOutgoingMessage buffer, IRobustSerializer serializer)
|
|
{
|
|
if (HttpInfo is null)
|
|
{
|
|
buffer.Write(false);
|
|
return;
|
|
}
|
|
|
|
buffer.Write(true);
|
|
buffer.WritePadBits();
|
|
|
|
var (ep, key) = HttpInfo.Value;
|
|
buffer.Write(ep);
|
|
buffer.Write(key);
|
|
}
|
|
}
|