Use synchronous packet (de)serialization

This commit is contained in:
Oliver Booth 2023-01-22 14:52:08 +00:00
parent 6548da76ad
commit b95f417abf
No known key found for this signature in database
GPG Key ID: 32A00B35503AF634
16 changed files with 37 additions and 65 deletions

View File

@ -7,15 +7,13 @@ internal sealed class GoodbyePacket : Packet
{
public string Message { get; set; }
protected override Task DeserializeAsync(ProtocolReader reader)
protected override void Deserialize(ProtocolReader reader)
{
Message = reader.ReadString();
return Task.CompletedTask;
}
protected override Task SerializeAsync(ProtocolWriter writer)
protected override void Serialize(ProtocolWriter writer)
{
writer.Write(Message);
return Task.CompletedTask;
}
}

View File

@ -7,15 +7,13 @@ internal sealed class HelloPacket : Packet
{
public string Message { get; set; }
protected override Task DeserializeAsync(ProtocolReader reader)
protected override void Deserialize(ProtocolReader reader)
{
Message = reader.ReadString();
return Task.CompletedTask;
}
protected override Task SerializeAsync(ProtocolWriter writer)
protected override void Serialize(ProtocolWriter writer)
{
writer.Write(Message);
return Task.CompletedTask;
}
}

View File

@ -7,15 +7,13 @@ internal sealed class GoodbyePacket : Packet
{
public string Message { get; set; }
protected override Task DeserializeAsync(ProtocolReader reader)
protected override void Deserialize(ProtocolReader reader)
{
Message = reader.ReadString();
return Task.CompletedTask;
}
protected override Task SerializeAsync(ProtocolWriter writer)
protected override void Serialize(ProtocolWriter writer)
{
writer.Write(Message);
return Task.CompletedTask;
}
}

View File

@ -7,15 +7,13 @@ internal sealed class HelloPacket : Packet
{
public string Message { get; set; }
protected override Task DeserializeAsync(ProtocolReader reader)
protected override void Deserialize(ProtocolReader reader)
{
Message = reader.ReadString();
return Task.CompletedTask;
}
protected override Task SerializeAsync(ProtocolWriter writer)
protected override void Serialize(ProtocolWriter writer)
{
writer.Write(Message);
return Task.CompletedTask;
}
}

View File

@ -96,7 +96,7 @@ public abstract class BaseClientNode : Node
int length;
try
{
length = await Task.Run(() => networkReader.ReadInt32(), cancellationToken);
length = await Task.Run(networkReader.ReadInt32, cancellationToken);
}
catch (EndOfStreamException)
{
@ -136,7 +136,7 @@ public abstract class BaseClientNode : Node
return null;
var packet = (Packet) constructor.Invoke(null);
await packet.DeserializeAsync(bufferReader);
packet.Deserialize(bufferReader);
await targetStream.DisposeAsync();
if (RegisteredPacketHandlers.TryGetValue(packetType, out IReadOnlyCollection<PacketHandler>? handlers))
@ -170,7 +170,7 @@ public abstract class BaseClientNode : Node
await using var bufferWriter = new ProtocolWriter(targetStream);
bufferWriter.Write(packet.Id);
await packet.SerializeAsync(bufferWriter);
packet.Serialize(bufferWriter);
await targetStream.FlushAsync(cancellationToken);
buffer.Position = 0;

View File

@ -29,11 +29,11 @@ public abstract class Packet
/// Deserializes this packet from the specified reader.
/// </summary>
/// <param name="reader">The reader from which this packet should be deserialized.</param>
protected internal abstract Task DeserializeAsync(ProtocolReader reader);
protected internal abstract void Deserialize(ProtocolReader reader);
/// <summary>
/// Serializes this packet to the specified writer.
/// </summary>
/// <param name="writer">The writer to which this packet should be serialized.</param>
protected internal abstract Task SerializeAsync(ProtocolWriter writer);
protected internal abstract void Serialize(ProtocolWriter writer);
}

View File

@ -22,16 +22,14 @@ internal sealed class DisconnectPacket : Packet
public DisconnectReason Reason { get; private set; }
/// <inheritdoc />
protected internal override Task DeserializeAsync(ProtocolReader reader)
protected internal override void Deserialize(ProtocolReader reader)
{
Reason = (DisconnectReason) reader.ReadByte();
return Task.CompletedTask;
}
/// <inheritdoc />
protected internal override Task SerializeAsync(ProtocolWriter writer)
protected internal override void Serialize(ProtocolWriter writer)
{
writer.Write((byte) Reason);
return Task.CompletedTask;
}
}

View File

@ -41,26 +41,22 @@ internal sealed class EncryptionRequestPacket : Packet
public byte[] PublicKey { get; private set; }
/// <inheritdoc />
protected internal override Task DeserializeAsync(ProtocolReader reader)
protected internal override void Deserialize(ProtocolReader reader)
{
int length = reader.ReadInt32();
PublicKey = reader.ReadBytes(length);
length = reader.ReadInt32();
Payload = reader.ReadBytes(length);
return Task.CompletedTask;
}
/// <inheritdoc />
protected internal override Task SerializeAsync(ProtocolWriter writer)
protected internal override void Serialize(ProtocolWriter writer)
{
writer.Write(PublicKey.Length);
writer.Write(PublicKey);
writer.Write(Payload.Length);
writer.Write(Payload);
return Task.CompletedTask;
}
}

View File

@ -36,18 +36,16 @@ internal sealed class HandshakeResponsePacket : Packet
public int ProtocolVersion { get; private set; }
/// <inheritdoc />
protected internal override Task DeserializeAsync(ProtocolReader reader)
protected internal override void Deserialize(ProtocolReader reader)
{
HandshakeResponse = (HandshakeResponse) reader.ReadByte();
ProtocolVersion = reader.ReadInt32();
return Task.CompletedTask;
}
/// <inheritdoc />
protected internal override Task SerializeAsync(ProtocolWriter writer)
protected internal override void Serialize(ProtocolWriter writer)
{
writer.Write((byte) HandshakeResponse);
writer.Write(ProtocolVersion);
return Task.CompletedTask;
}
}

View File

@ -27,17 +27,17 @@ public sealed class PongPacket : ResponsePacket
public byte[] Payload { get; private set; }
/// <inheritdoc />
protected internal override async Task DeserializeAsync(ProtocolReader reader)
protected internal override void Deserialize(ProtocolReader reader)
{
await base.DeserializeAsync(reader);
base.Deserialize(reader);
int length = reader.ReadInt32();
Payload = reader.ReadBytes(length);
}
/// <inheritdoc />
protected internal override async Task SerializeAsync(ProtocolWriter writer)
protected internal override void Serialize(ProtocolWriter writer)
{
await base.SerializeAsync(writer);
base.Serialize(writer);
writer.Write(Payload.Length);
writer.Write(Payload);
}

View File

@ -24,16 +24,14 @@ internal sealed class SessionExchangePacket : Packet
public Guid Session { get; private set; }
/// <inheritdoc />
protected internal override Task DeserializeAsync(ProtocolReader reader)
protected internal override void Deserialize(ProtocolReader reader)
{
Session = reader.ReadGuid();
return Task.CompletedTask;
}
/// <inheritdoc />
protected internal override Task SerializeAsync(ProtocolWriter writer)
protected internal override void Serialize(ProtocolWriter writer)
{
writer.Write(Session);
return Task.CompletedTask;
}
}

View File

@ -41,26 +41,22 @@ internal sealed class EncryptionResponsePacket : Packet
/// <inheritdoc />
protected internal override Task DeserializeAsync(ProtocolReader reader)
protected internal override void Deserialize(ProtocolReader reader)
{
int length = reader.ReadInt32();
SharedSecret = reader.ReadBytes(length);
length = reader.ReadInt32();
Payload = reader.ReadBytes(length);
return Task.CompletedTask;
}
/// <inheritdoc />
protected internal override Task SerializeAsync(ProtocolWriter writer)
protected internal override void Serialize(ProtocolWriter writer)
{
writer.Write(SharedSecret.Length);
writer.Write(SharedSecret);
writer.Write(Payload.Length);
writer.Write(Payload);
return Task.CompletedTask;
}
}

View File

@ -26,16 +26,14 @@ internal sealed class HandshakeRequestPacket : Packet
public int ProtocolVersion { get; private set; }
/// <inheritdoc />
protected internal override Task DeserializeAsync(ProtocolReader reader)
protected internal override void Deserialize(ProtocolReader reader)
{
ProtocolVersion = reader.ReadInt32();
return Task.CompletedTask;
}
/// <inheritdoc />
protected internal override Task SerializeAsync(ProtocolWriter writer)
protected internal override void Serialize(ProtocolWriter writer)
{
writer.Write(ProtocolVersion);
return Task.CompletedTask;
}
}

View File

@ -25,17 +25,17 @@ public sealed class PingPacket : RequestPacket
public byte[] Payload { get; private set; }
/// <inheritdoc />
protected internal override async Task DeserializeAsync(ProtocolReader reader)
protected internal override void Deserialize(ProtocolReader reader)
{
await base.DeserializeAsync(reader);
base.Deserialize(reader);
int length = reader.ReadInt32();
Payload = reader.ReadBytes(length);
}
/// <inheritdoc />
protected internal override async Task SerializeAsync(ProtocolWriter writer)
protected internal override void Serialize(ProtocolWriter writer)
{
await base.SerializeAsync(writer);
base.Serialize(writer);
writer.Write(Payload.Length);
writer.Write(Payload);
}

View File

@ -12,16 +12,14 @@ public abstract class RequestPacket : Packet
public long CallbackId { get; internal set; }
/// <inheritdoc />
protected internal override Task DeserializeAsync(ProtocolReader reader)
protected internal override void Deserialize(ProtocolReader reader)
{
CallbackId = reader.ReadInt64();
return Task.CompletedTask;
}
/// <inheritdoc />
protected internal override Task SerializeAsync(ProtocolWriter writer)
protected internal override void Serialize(ProtocolWriter writer)
{
writer.Write(CallbackId);
return Task.CompletedTask;
}
}

View File

@ -21,16 +21,14 @@ public abstract class ResponsePacket : Packet
public long CallbackId { get; private set; }
/// <inheritdoc />
protected internal override Task DeserializeAsync(ProtocolReader reader)
protected internal override void Deserialize(ProtocolReader reader)
{
CallbackId = reader.ReadInt64();
return Task.CompletedTask;
}
/// <inheritdoc />
protected internal override Task SerializeAsync(ProtocolWriter writer)
protected internal override void Serialize(ProtocolWriter writer)
{
writer.Write(CallbackId);
return Task.CompletedTask;
}
}