-using System;
+using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Net;
{
private struct SendMessageInfo
{
- public byte[] Buffer;
+ public ByteSpan Span;
public EndPoint Recipient;
}
{
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)
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>