From 1a5ebb0459e5eccf8ad1e2ad677f8e35f5767b60 Mon Sep 17 00:00:00 2001 From: Matthew Endsley Date: Fri, 18 Dec 2020 17:19:38 -0800 Subject: [PATCH] Update SendMessageInfo to hold byte span --- .../ThreadLimitedUdpConnectionListener.cs | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/Hazel/FewerThreads/ThreadLimitedUdpConnectionListener.cs b/Hazel/FewerThreads/ThreadLimitedUdpConnectionListener.cs index ccd5d04..7eabfac 100644 --- a/Hazel/FewerThreads/ThreadLimitedUdpConnectionListener.cs +++ b/Hazel/FewerThreads/ThreadLimitedUdpConnectionListener.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Net; @@ -15,7 +15,7 @@ namespace Hazel.Udp.FewerThreads { private struct SendMessageInfo { - public byte[] Buffer; + public ByteSpan Span; public EndPoint Recipient; } @@ -203,7 +203,7 @@ namespace Hazel.Udp.FewerThreads { if (this.socket.Poll(Timeout.Infinite, SelectMode.SelectWrite)) { - this.socket.SendTo(msg.Buffer, 0, msg.Buffer.Length, SocketFlags.None, msg.Recipient); + this.socket.SendTo(msg.Span.GetUnderlyingArray(), msg.Span.Offset, msg.Span.Length, SocketFlags.None, msg.Recipient); } } catch (Exception e) @@ -283,7 +283,12 @@ namespace Hazel.Udp.FewerThreads internal void SendDataRaw(byte[] response, EndPoint remoteEndPoint) { - this.sendQueue.TryAdd(new SendMessageInfo() { Buffer = response, Recipient = remoteEndPoint }); + QueueRawData(response, remoteEndPoint); + } + + protected void QueueRawData(ByteSpan span, EndPoint remoteEndPoint) + { + this.sendQueue.TryAdd(new SendMessageInfo() { Span = span, Recipient = remoteEndPoint }); } /// -- 2.39.5