]> git.deb.at Git - rhonda/impostor.hazel.git/commitdiff
Update SendMessageInfo to hold byte span
authorMatthew Endsley <mendsley@gmail.com>
Sat, 19 Dec 2020 01:19:38 +0000 (17:19 -0800)
committerMatthew Endsley <mendsley@gmail.com>
Tue, 2 Feb 2021 16:53:33 +0000 (08:53 -0800)
Hazel/FewerThreads/ThreadLimitedUdpConnectionListener.cs

index ccd5d041d183099a68d8bd85efc99ced50ed74d5..7eabfac77d9ea558889a3b7662217da5e2e01802 100644 (file)
@@ -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 });
         }
 
         /// <summary>