From a40d41b3404bd8025360b789894b50e370349741 Mon Sep 17 00:00:00 2001 From: Kerry Jiang Date: Sat, 11 Jan 2025 10:55:30 -0800 Subject: [PATCH] optimized SocketSender --- src/SuperSocket.Connection/Sockets/SocketSender.cs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/SuperSocket.Connection/Sockets/SocketSender.cs b/src/SuperSocket.Connection/Sockets/SocketSender.cs index 2b9a32763..26eb0b642 100644 --- a/src/SuperSocket.Connection/Sockets/SocketSender.cs +++ b/src/SuperSocket.Connection/Sockets/SocketSender.cs @@ -16,6 +16,8 @@ public class SocketSender : SocketAsyncEventArgs, IValueTaskSource, IResett private static readonly Action _continuationCompleted = _ => { }; + private List> _bufferList; + public SocketSender() : base(unsafeSuppressExecutionContextFlow: true) { @@ -44,7 +46,12 @@ private void SetBuffer(in ReadOnlySequence buffer) } else { - var bufferList = new List>(); + var bufferList = _bufferList; + + if (bufferList == null) + { + _bufferList = bufferList = new List>(); + } foreach (var piece in buffer) { @@ -70,6 +77,7 @@ protected override void OnCompleted(SocketAsyncEventArgs e) public int GetResult(short token) { + _continuation = null; return BytesTransferred; } @@ -99,11 +107,10 @@ public void OnCompleted(Action continuation, object state, short token, public bool TryReset() { - _continuation = null; - if (BufferList != null) { BufferList = null; + _bufferList?.Clear(); } else {