fix(core): Converts account packets to spanwriter (#381)

- [X] Converts account packets to spanwriter
This commit is contained in:
Kamron Batman 2021-01-04 18:47:20 -08:00 committed by GitHub
parent 3b413371dc
commit ac76c57c39
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 157 additions and 117 deletions

View file

@ -32,7 +32,8 @@ namespace Server.Network
{
public delegate void NetStateCreatedCallback(NetState ns);
public delegate void EncodePacket(ref CircularBuffer<byte> buffer, ref int length);
public delegate void DecodePacket(ref CircularBuffer<byte> buffer, ref int length);
public delegate void EncodePacket(ReadOnlySpan<byte> inputBuffer, ref CircularBuffer<byte> outputBuffer, out int length);
public partial class NetState : IComparable<NetState>, IDisposable
{
@ -54,7 +55,7 @@ namespace Server.Network
private byte[] _sendBuffer;
private long m_NextCheckActivity;
private volatile bool m_Running;
private volatile EncodePacket _packetDecoder;
private volatile DecodePacket _packetDecoder;
private volatile EncodePacket _packetEncoder;
internal int m_AuthID;
@ -115,7 +116,7 @@ namespace Server.Network
public IPAddress Address { get; }
public EncodePacket PacketDecoder
public DecodePacket PacketDecoder
{
get => _packetDecoder;
set => _packetDecoder = value;
@ -392,8 +393,15 @@ namespace Server.Network
try
{
buffer.CopyFrom(span);
_packetEncoder?.Invoke(ref buffer, ref length);
if (_packetEncoder != null)
{
_packetEncoder(span, ref buffer, out length);
}
else
{
buffer.CopyFrom(span);
}
SendPipe.Writer.Advance((uint)length);
}
catch (Exception ex)
@ -418,7 +426,12 @@ namespace Server.Network
try
{
_packetEncoder?.Invoke(ref buffer, ref length);
// _packetEncoder?.Invoke(ref buffer, ref length);
if (CompressionEnabled)
{
NetworkCompression.Compress(ref buffer, ref length); // This will be changed soon
}
SendPipe.Writer.Advance((uint)length);
}
catch (Exception ex)