commit b742d448ea3d3b599950edc1019eecc05666de24
parent 7bd86e3331918290eca3caa15a57aeafcf29ab18
Author: Mikolaj Lenczewski <mikolaj.lenczewski308@gmail.com>
Date: Fri, 8 May 2020 20:02:55 +0100
Removed the generic TState parameter.
Diffstat:
9 files changed, 226 insertions(+), 46 deletions(-)
diff --git a/NetSharp/NetSharp/ConnectionBuilder.cs b/NetSharp/NetSharp/ConnectionBuilder.cs
@@ -0,0 +1,106 @@
+using System.Net;
+using System.Net.Sockets;
+using NetSharp.Raw;
+
+namespace NetSharp
+{
+ /*
+ public static class ConnectionBuilder
+ {
+ public static ConfiguredConnectionBuilder WithCustomTransport(
+ IRawNetworkTransportProvider transportProvider, ProtocolType transportProtocol) =>
+ new ConfiguredConnectionBuilder(transportProvider, transportProtocol);
+
+ public static ConfiguredConnectionBuilder WithDatagramTransport(ushort datagramSize, ProtocolType transportProtocol = ProtocolType.Udp) =>
+ WithCustomTransport(new DatagramRawNetworkTransportProvider(datagramSize), transportProtocol);
+
+ public static ConfiguredConnectionBuilder WithStreamTransport(ProtocolType transportProtocol = ProtocolType.Tcp) =>
+ WithCustomTransport(new StreamRawNetworkTransportProvider(), transportProtocol);
+
+ public sealed class ConfiguredConnectionBuilder
+ {
+ private readonly IRawNetworkTransportProvider transportProvider;
+
+ internal ConfiguredConnectionBuilder(IRawNetworkTransportProvider transportProvider, ProtocolType transportProtocol)
+ {
+ this.transportProvider = transportProvider;
+
+ SocketType = transportProvider.TransportProtocolType;
+
+ ProtocolType = transportProtocol;
+ }
+
+ public AddressFamily AddressFamily { get; private set; } = AddressFamily.InterNetwork;
+ public EndPoint DefaultEndPoint { get; private set; } = new IPEndPoint(IPAddress.Any, 0);
+ public ProtocolType ProtocolType { get; }
+ public SocketType SocketType { get; }
+
+ public ConfiguredConnectionBuilder WithAddressFamily(AddressFamily addressFamily, EndPoint defaultEndPoint)
+ {
+ AddressFamily = addressFamily;
+
+ DefaultEndPoint = defaultEndPoint;
+
+ return this;
+ }
+
+ public CompletedConnectionBuilder WithDefaultSettings(int packetBufferSize) =>
+ WithSettings(packetBufferSize, 1000, 0);
+
+ public ConfiguredConnectionBuilder WithInterNetwork(EndPoint defaultEndPoint) =>
+ WithAddressFamily(AddressFamily.InterNetwork, defaultEndPoint);
+
+ public ConfiguredConnectionBuilder WithInterNetworkV6(EndPoint defaultEndPoint) =>
+ WithAddressFamily(AddressFamily.InterNetworkV6, defaultEndPoint);
+
+ public CompletedConnectionBuilder WithSettings(int packetBufferSize, int pooledBuffersPerBucket,
+ uint preallocatedStateObjects)
+ {
+ return new CompletedConnectionBuilder(transportProvider, AddressFamily, DefaultEndPoint, SocketType,
+ ProtocolType, packetBufferSize, pooledBuffersPerBucket, preallocatedStateObjects);
+ }
+
+ public sealed class CompletedConnectionBuilder
+ {
+ private readonly IRawNetworkTransportProvider transportProvider;
+
+ internal CompletedConnectionBuilder(
+ IRawNetworkTransportProvider transportProvider, AddressFamily addressFamily, EndPoint defaultEndPoint,
+ SocketType transportProtocolType, ProtocolType transportProtocol, int maxBufferSize, int pooledBuffersPerBucket,
+ uint preallocatedStateObjects)
+ {
+ this.transportProvider = transportProvider;
+
+ AddressFamily = addressFamily;
+
+ DefaultEndPoint = defaultEndPoint;
+
+ SocketType = transportProtocolType;
+
+ ProtocolType = transportProtocol;
+
+ BufferSize = maxBufferSize;
+
+ PooledBuffersPerBucket = pooledBuffersPerBucket;
+
+ PreallocatedStateObjects = preallocatedStateObjects;
+ }
+
+ public AddressFamily AddressFamily { get; }
+ public int BufferSize { get; }
+ public EndPoint DefaultEndPoint { get; }
+ public int PooledBuffersPerBucket { get; }
+ public uint PreallocatedStateObjects { get; }
+ public ProtocolType ProtocolType { get; }
+ public SocketType SocketType { get; }
+
+ public Connection BuildDefault()
+ {
+ return new Connection(AddressFamily, SocketType, ProtocolType, transportProvider, DefaultEndPoint,
+ BufferSize, PooledBuffersPerBucket, PreallocatedStateObjects);
+ }
+ }
+ }
+ }
+ */
+}
+\ No newline at end of file
diff --git a/NetSharp/NetSharp/NetSharp.xml b/NetSharp/NetSharp/NetSharp.xml
@@ -9,10 +9,59 @@
</member>
<member name="M:NetSharp.Connection.HandleRawPacketReceived(System.Net.EndPoint@,System.ReadOnlyMemory{System.Byte},System.Int32,System.Memory{System.Byte})">
<inheritdoc />
+ TODO convert to use registered packet handlers
+ </member>
+ <member name="M:NetSharp.Connection.Connect(System.Net.EndPoint)">
+ <inheritdoc />
+ </member>
+ <member name="M:NetSharp.Connection.ConnectAsync(System.Net.EndPoint)">
+ <inheritdoc />
+ </member>
+ <member name="M:NetSharp.Connection.Read(System.Net.EndPoint@,System.Memory{System.Byte},System.Net.Sockets.SocketFlags)">
+ <inheritdoc />
+ </member>
+ <member name="M:NetSharp.Connection.ReadAsync(System.Net.EndPoint,System.Memory{System.Byte},System.Net.Sockets.SocketFlags)">
+ <inheritdoc />
+ </member>
+ <member name="M:NetSharp.Connection.Start(System.UInt16)">
+ <inheritdoc />
+ </member>
+ <member name="M:NetSharp.Connection.Stop">
+ <inheritdoc />
+ </member>
+ <member name="M:NetSharp.Connection.Write(System.Net.EndPoint,System.ReadOnlyMemory{System.Byte},System.Net.Sockets.SocketFlags)">
+ <inheritdoc />
+ </member>
+ <member name="M:NetSharp.Connection.WriteAsync(System.Net.EndPoint,System.ReadOnlyMemory{System.Byte},System.Net.Sockets.SocketFlags)">
+ <inheritdoc />
+ </member>
+ <member name="M:NetSharp.ConnectionBase.Connect(System.Net.EndPoint)">
+ <inheritdoc />
+ </member>
+ <member name="M:NetSharp.ConnectionBase.ConnectAsync(System.Net.EndPoint)">
+ <inheritdoc />
</member>
<member name="M:NetSharp.ConnectionBase.Dispose">
<inheritdoc />
</member>
+ <member name="M:NetSharp.ConnectionBase.Read(System.Net.EndPoint@,System.Memory{System.Byte},System.Net.Sockets.SocketFlags)">
+ <inheritdoc />
+ </member>
+ <member name="M:NetSharp.ConnectionBase.ReadAsync(System.Net.EndPoint,System.Memory{System.Byte},System.Net.Sockets.SocketFlags)">
+ <inheritdoc />
+ </member>
+ <member name="M:NetSharp.ConnectionBase.Start(System.UInt16)">
+ <inheritdoc />
+ </member>
+ <member name="M:NetSharp.ConnectionBase.Stop">
+ <inheritdoc />
+ </member>
+ <member name="M:NetSharp.ConnectionBase.Write(System.Net.EndPoint,System.ReadOnlyMemory{System.Byte},System.Net.Sockets.SocketFlags)">
+ <inheritdoc />
+ </member>
+ <member name="M:NetSharp.ConnectionBase.WriteAsync(System.Net.EndPoint,System.ReadOnlyMemory{System.Byte},System.Net.Sockets.SocketFlags)">
+ <inheritdoc />
+ </member>
<member name="T:NetSharp.Packets.NetworkPacket">
<summary>
Represents a raw packet sent across the network.
@@ -248,9 +297,33 @@
<member name="M:NetSharp.Raw.RawNetworkReaderBase`1.Dispose(System.Boolean)">
<inheritdoc />
</member>
+ <member name="M:NetSharp.Raw.RawNetworkReaderBase`1.Start(System.UInt16)">
+ <inheritdoc />
+ </member>
+ <member name="M:NetSharp.Raw.RawNetworkReaderBase`1.Stop">
+ <inheritdoc />
+ </member>
<member name="M:NetSharp.Raw.RawNetworkWriterBase`1.#ctor(System.Net.Sockets.Socket@,System.Net.EndPoint,System.Int32,System.Int32,System.UInt32)">
<inheritdoc />
</member>
+ <member name="M:NetSharp.Raw.RawNetworkWriterBase`1.Connect(System.Net.EndPoint)">
+ <inheritdoc />
+ </member>
+ <member name="M:NetSharp.Raw.RawNetworkWriterBase`1.ConnectAsync(System.Net.EndPoint)">
+ <inheritdoc />
+ </member>
+ <member name="M:NetSharp.Raw.RawNetworkWriterBase`1.Read(System.Net.EndPoint@,System.Memory{System.Byte},System.Net.Sockets.SocketFlags)">
+ <inheritdoc />
+ </member>
+ <member name="M:NetSharp.Raw.RawNetworkWriterBase`1.ReadAsync(System.Net.EndPoint,System.Memory{System.Byte},System.Net.Sockets.SocketFlags)">
+ <inheritdoc />
+ </member>
+ <member name="M:NetSharp.Raw.RawNetworkWriterBase`1.Write(System.Net.EndPoint,System.ReadOnlyMemory{System.Byte},System.Net.Sockets.SocketFlags)">
+ <inheritdoc />
+ </member>
+ <member name="M:NetSharp.Raw.RawNetworkWriterBase`1.WriteAsync(System.Net.EndPoint,System.ReadOnlyMemory{System.Byte},System.Net.Sockets.SocketFlags)">
+ <inheritdoc />
+ </member>
<member name="M:NetSharp.Raw.Stream.RawStreamNetworkReader.#ctor(System.Net.Sockets.Socket@,NetSharp.Raw.NetworkRequestHandler,System.Net.EndPoint,System.Int32,System.Int32,System.UInt32)">
<inheritdoc />
</member>
diff --git a/NetSharp/NetSharp/Raw/Datagram/RawDatagramNetworkReader.cs b/NetSharp/NetSharp/Raw/Datagram/RawDatagramNetworkReader.cs
@@ -3,7 +3,7 @@ using System.Net.Sockets;
namespace NetSharp.Raw.Datagram
{
- public sealed class RawDatagramNetworkReader : RawNetworkReaderBase<SocketAsyncEventArgs>
+ public sealed class RawDatagramNetworkReader : RawNetworkReaderBase
{
/// <inheritdoc />
public RawDatagramNetworkReader(ref Socket rawConnection, NetworkRequestHandler? requestHandler, EndPoint defaultEndPoint, int pooledPacketBufferSize,
@@ -39,7 +39,7 @@ namespace NetSharp.Raw.Datagram
default:
BufferPool.Return(receiveBuffer, true);
- StateObjectPool.Return(args);
+ ArgsPool.Return(args);
break;
}
}
@@ -49,7 +49,7 @@ namespace NetSharp.Raw.Datagram
byte[] sendBuffer = args.Buffer;
BufferPool.Return(sendBuffer, true);
- StateObjectPool.Return(args);
+ ArgsPool.Return(args);
}
private void HandleIoCompleted(object sender, SocketAsyncEventArgs args)
@@ -75,7 +75,7 @@ namespace NetSharp.Raw.Datagram
return;
}
- SocketAsyncEventArgs args = StateObjectPool.Rent();
+ SocketAsyncEventArgs args = ArgsPool.Rent();
StartReceiveFrom(args);
}
@@ -86,7 +86,7 @@ namespace NetSharp.Raw.Datagram
if (ShutdownToken.IsCancellationRequested)
{
BufferPool.Return(receiveBuffer, true);
- StateObjectPool.Return(args);
+ ArgsPool.Return(args);
return;
}
@@ -106,7 +106,7 @@ namespace NetSharp.Raw.Datagram
if (ShutdownToken.IsCancellationRequested)
{
BufferPool.Return(sendBuffer, true);
- StateObjectPool.Return(args);
+ ArgsPool.Return(args);
return;
}
diff --git a/NetSharp/NetSharp/Raw/Datagram/RawDatagramNetworkWriter.cs b/NetSharp/NetSharp/Raw/Datagram/RawDatagramNetworkWriter.cs
@@ -5,7 +5,7 @@ using System.Threading.Tasks;
namespace NetSharp.Raw.Datagram
{
- public sealed class RawDatagramNetworkWriter : RawNetworkWriterBase<SocketAsyncEventArgs>
+ public sealed class RawDatagramNetworkWriter : RawNetworkWriterBase
{
/// <inheritdoc />
public RawDatagramNetworkWriter(ref Socket rawConnection, EndPoint defaultEndPoint, int pooledPacketBufferSize, int pooledBuffersPerBucket = 1000,
@@ -33,7 +33,7 @@ namespace NetSharp.Raw.Datagram
break;
}
- StateObjectPool.Return(args);
+ ArgsPool.Return(args);
}
private void CompleteReceiveFrom(SocketAsyncEventArgs args)
@@ -60,7 +60,7 @@ namespace NetSharp.Raw.Datagram
}
BufferPool.Return(receiveBuffer, true);
- StateObjectPool.Return(args);
+ ArgsPool.Return(args);
}
private void CompleteSendTo(SocketAsyncEventArgs args)
@@ -86,7 +86,7 @@ namespace NetSharp.Raw.Datagram
}
BufferPool.Return(sendBuffer, true);
- StateObjectPool.Return(args);
+ ArgsPool.Return(args);
}
private void HandleIoCompleted(object sender, SocketAsyncEventArgs args)
@@ -144,7 +144,7 @@ namespace NetSharp.Raw.Datagram
public override ValueTask ConnectAsync(EndPoint remoteEndPoint)
{
TaskCompletionSource<bool> tcs = new TaskCompletionSource<bool>();
- SocketAsyncEventArgs args = StateObjectPool.Rent();
+ SocketAsyncEventArgs args = ArgsPool.Rent();
args.RemoteEndPoint = remoteEndPoint;
@@ -153,7 +153,7 @@ namespace NetSharp.Raw.Datagram
if (Connection.ConnectAsync(args)) return new ValueTask(tcs.Task);
- StateObjectPool.Return(args);
+ ArgsPool.Return(args);
return new ValueTask();
}
@@ -193,7 +193,7 @@ namespace NetSharp.Raw.Datagram
}
TaskCompletionSource<int> tcs = new TaskCompletionSource<int>();
- SocketAsyncEventArgs args = StateObjectPool.Rent();
+ SocketAsyncEventArgs args = ArgsPool.Rent();
byte[] transmissionBuffer = BufferPool.Rent(PacketBufferSize);
@@ -213,7 +213,7 @@ namespace NetSharp.Raw.Datagram
transmissionBuffer.CopyTo(readBuffer);
BufferPool.Return(transmissionBuffer, true);
- StateObjectPool.Return(args);
+ ArgsPool.Return(args);
return new ValueTask<int>(result);
}
@@ -254,7 +254,7 @@ namespace NetSharp.Raw.Datagram
}
TaskCompletionSource<int> tcs = new TaskCompletionSource<int>();
- SocketAsyncEventArgs args = StateObjectPool.Rent();
+ SocketAsyncEventArgs args = ArgsPool.Rent();
byte[] transmissionBuffer = BufferPool.Rent(PacketBufferSize);
writeBuffer.CopyTo(transmissionBuffer);
@@ -273,7 +273,7 @@ namespace NetSharp.Raw.Datagram
int result = args.BytesTransferred;
BufferPool.Return(transmissionBuffer, true);
- StateObjectPool.Return(args);
+ ArgsPool.Return(args);
return new ValueTask<int>(result);
}
diff --git a/NetSharp/NetSharp/Raw/RawNetworkConnectionBase.cs b/NetSharp/NetSharp/Raw/RawNetworkConnectionBase.cs
@@ -7,13 +7,13 @@ using System.Net.Sockets;
namespace NetSharp.Raw
{
- public abstract class RawNetworkConnectionBase<TState> : IDisposable where TState : class
+ public abstract class RawNetworkConnectionBase : IDisposable
{
+ protected readonly SlimObjectPool<SocketAsyncEventArgs> ArgsPool;
protected readonly ArrayPool<byte> BufferPool;
protected readonly Socket Connection;
protected readonly EndPoint DefaultEndPoint;
protected readonly int PacketBufferSize;
- protected readonly SlimObjectPool<TState> StateObjectPool;
protected RawNetworkConnectionBase(ref Socket rawConnection, EndPoint defaultEndPoint, int pooledPacketBufferSize,
int pooledBuffersPerBucket = 1000, uint preallocatedStateObjects = 0)
@@ -25,21 +25,21 @@ namespace NetSharp.Raw
DefaultEndPoint = defaultEndPoint;
- StateObjectPool =
- new SlimObjectPool<TState>(CreateStateObject, ResetStateObject, DestroyStateObject, CanReuseStateObject);
+ ArgsPool =
+ new SlimObjectPool<SocketAsyncEventArgs>(CreateStateObject, ResetStateObject, DestroyStateObject, CanReuseStateObject);
// TODO implement pooling in better way
for (uint i = 0; i < preallocatedStateObjects; i++)
{
- StateObjectPool.Return(CreateStateObject());
+ ArgsPool.Return(CreateStateObject());
}
}
- protected abstract bool CanReuseStateObject(ref TState instance);
+ protected abstract bool CanReuseStateObject(ref SocketAsyncEventArgs instance);
- protected abstract TState CreateStateObject();
+ protected abstract SocketAsyncEventArgs CreateStateObject();
- protected abstract void DestroyStateObject(TState instance);
+ protected abstract void DestroyStateObject(SocketAsyncEventArgs instance);
/// <summary>
/// Allows for inheritors to dispose of their own resources.
@@ -48,10 +48,10 @@ namespace NetSharp.Raw
{
if (!disposing) return;
- StateObjectPool.Dispose();
+ ArgsPool.Dispose();
}
- protected abstract void ResetStateObject(ref TState instance);
+ protected abstract void ResetStateObject(ref SocketAsyncEventArgs instance);
/// <inheritdoc />
public void Dispose()
diff --git a/NetSharp/NetSharp/Raw/RawNetworkReaderBase.cs b/NetSharp/NetSharp/Raw/RawNetworkReaderBase.cs
@@ -8,7 +8,7 @@ namespace NetSharp.Raw
public delegate bool NetworkRequestHandler(in EndPoint remoteEndPoint, ReadOnlyMemory<byte> requestBuffer, int receivedRequestBytes,
Memory<byte> responseBuffer);
- public abstract class RawNetworkReaderBase<TState> : RawNetworkConnectionBase<TState>, INetworkReader where TState : class
+ public abstract class RawNetworkReaderBase : RawNetworkConnectionBase, INetworkReader
{
private readonly CancellationTokenSource shutdownTokenSource;
diff --git a/NetSharp/NetSharp/Raw/RawNetworkWriterBase.cs b/NetSharp/NetSharp/Raw/RawNetworkWriterBase.cs
@@ -5,7 +5,7 @@ using System.Threading.Tasks;
namespace NetSharp.Raw
{
- public abstract class RawNetworkWriterBase<TState> : RawNetworkConnectionBase<TState>, INetworkWriter where TState : class
+ public abstract class RawNetworkWriterBase : RawNetworkConnectionBase, INetworkWriter
{
/// <inheritdoc />
protected RawNetworkWriterBase(ref Socket rawConnection, EndPoint defaultEndPoint, int pooledPacketBufferSize, int pooledBuffersPerBucket = 1000,
diff --git a/NetSharp/NetSharp/Raw/Stream/RawStreamNetworkReader.cs b/NetSharp/NetSharp/Raw/Stream/RawStreamNetworkReader.cs
@@ -4,7 +4,7 @@ using System.Runtime.CompilerServices;
namespace NetSharp.Raw.Stream
{
- public sealed class RawStreamNetworkReader : RawNetworkReaderBase<SocketAsyncEventArgs>
+ public sealed class RawStreamNetworkReader : RawNetworkReaderBase
{
/// <inheritdoc />
public RawStreamNetworkReader(ref Socket rawConnection, NetworkRequestHandler? requestHandler, EndPoint defaultEndPoint, int pooledPacketBufferSize,
@@ -24,7 +24,7 @@ namespace NetSharp.Raw.Stream
clientSocket.Close();
clientSocket.Dispose();
- StateObjectPool.Return(args);
+ ArgsPool.Return(args);
}
private void CompleteAccept(SocketAsyncEventArgs args)
@@ -41,11 +41,11 @@ namespace NetSharp.Raw.Stream
* This can occur as a result of port scanning using a half-open SYN type scan (a SYN -> SYN-ACK -> RST sequence).
* Applications using the AcceptAsync method should be prepared to handle this condition.
*/
- StateObjectPool.Return(args);
+ ArgsPool.Return(args);
break;
default:
- StateObjectPool.Return(args);
+ ArgsPool.Return(args);
break;
}
@@ -218,7 +218,7 @@ namespace NetSharp.Raw.Stream
return;
}
- SocketAsyncEventArgs args = StateObjectPool.Rent();
+ SocketAsyncEventArgs args = ArgsPool.Rent();
StartAccept(args);
}
diff --git a/NetSharp/NetSharp/Raw/Stream/RawStreamNetworkWriter.cs b/NetSharp/NetSharp/Raw/Stream/RawStreamNetworkWriter.cs
@@ -6,7 +6,7 @@ using System.Threading.Tasks;
namespace NetSharp.Raw.Stream
{
- public sealed class RawStreamNetworkWriter : RawNetworkWriterBase<SocketAsyncEventArgs>
+ public sealed class RawStreamNetworkWriter : RawNetworkWriterBase
{
/// <inheritdoc />
public RawStreamNetworkWriter(ref Socket rawConnection, EndPoint defaultEndPoint, int pooledPacketBufferSize, int pooledBuffersPerBucket = 1000,
@@ -34,7 +34,7 @@ namespace NetSharp.Raw.Stream
break;
}
- StateObjectPool.Return(args);
+ ArgsPool.Return(args);
}
private void CompleteDisconnect(SocketAsyncEventArgs args)
@@ -57,7 +57,7 @@ namespace NetSharp.Raw.Stream
break;
}
- StateObjectPool.Return(args);
+ ArgsPool.Return(args);
}
private void CompleteReceive(SocketAsyncEventArgs args)
@@ -105,7 +105,7 @@ namespace NetSharp.Raw.Stream
}
BufferPool.Return(receiveBuffer, true);
- StateObjectPool.Return(args);
+ ArgsPool.Return(args);
}
private void CompleteSend(SocketAsyncEventArgs args)
@@ -152,7 +152,7 @@ namespace NetSharp.Raw.Stream
}
BufferPool.Return(sendBuffer, true);
- StateObjectPool.Return(args);
+ ArgsPool.Return(args);
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
@@ -230,7 +230,7 @@ namespace NetSharp.Raw.Stream
public override ValueTask ConnectAsync(EndPoint remoteEndPoint)
{
TaskCompletionSource<bool> tcs = new TaskCompletionSource<bool>();
- SocketAsyncEventArgs args = StateObjectPool.Rent();
+ SocketAsyncEventArgs args = ArgsPool.Rent();
args.RemoteEndPoint = remoteEndPoint;
@@ -239,7 +239,7 @@ namespace NetSharp.Raw.Stream
if (Connection.ConnectAsync(args)) return new ValueTask(tcs.Task);
- StateObjectPool.Return(args);
+ ArgsPool.Return(args);
return new ValueTask();
}
@@ -252,7 +252,7 @@ namespace NetSharp.Raw.Stream
public ValueTask DisconnectAsync(bool reuseSocket)
{
TaskCompletionSource<bool> tcs = new TaskCompletionSource<bool>();
- SocketAsyncEventArgs args = StateObjectPool.Rent();
+ SocketAsyncEventArgs args = ArgsPool.Rent();
args.DisconnectReuseSocket = reuseSocket;
@@ -261,7 +261,7 @@ namespace NetSharp.Raw.Stream
if (Connection.DisconnectAsync(args)) return new ValueTask(tcs.Task);
- StateObjectPool.Return(args);
+ ArgsPool.Return(args);
return new ValueTask();
}
@@ -306,7 +306,7 @@ namespace NetSharp.Raw.Stream
}
TaskCompletionSource<int> tcs = new TaskCompletionSource<int>();
- SocketAsyncEventArgs args = StateObjectPool.Rent();
+ SocketAsyncEventArgs args = ArgsPool.Rent();
byte[] transmissionBuffer = BufferPool.Rent(totalBytes);
@@ -328,7 +328,7 @@ namespace NetSharp.Raw.Stream
transmissionBuffer.CopyTo(readBuffer);
BufferPool.Return(transmissionBuffer, true);
- StateObjectPool.Return(args);
+ ArgsPool.Return(args);
return new ValueTask<int>(totalReceivedBytes + receivedBytes);
}
@@ -390,7 +390,7 @@ namespace NetSharp.Raw.Stream
}
TaskCompletionSource<int> tcs = new TaskCompletionSource<int>();
- SocketAsyncEventArgs args = StateObjectPool.Rent();
+ SocketAsyncEventArgs args = ArgsPool.Rent();
byte[] transmissionBuffer = BufferPool.Rent(totalBytes);
writeBuffer.CopyTo(transmissionBuffer);
@@ -411,7 +411,7 @@ namespace NetSharp.Raw.Stream
if (totalSentBytes + sentBytes == PacketBufferSize) // transmission complete
{
BufferPool.Return(transmissionBuffer, true);
- StateObjectPool.Return(args);
+ ArgsPool.Return(args);
return new ValueTask<int>(totalSentBytes + sentBytes);
}