Use synchronous packet (de)serialization
This commit is contained in:
parent
6548da76ad
commit
b95f417abf
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue