NetSharp

NetSharp.git
git clone git://git.lenczewski.org/NetSharp.git
Log | Files | Refs | README | LICENSE

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:
ANetSharp/NetSharp/ConnectionBuilder.cs | 107+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
MNetSharp/NetSharp/NetSharp.xml | 73+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
MNetSharp/NetSharp/Raw/Datagram/RawDatagramNetworkReader.cs | 12++++++------
MNetSharp/NetSharp/Raw/Datagram/RawDatagramNetworkWriter.cs | 20++++++++++----------
MNetSharp/NetSharp/Raw/RawNetworkConnectionBase.cs | 20++++++++++----------
MNetSharp/NetSharp/Raw/RawNetworkReaderBase.cs | 2+-
MNetSharp/NetSharp/Raw/RawNetworkWriterBase.cs | 2+-
MNetSharp/NetSharp/Raw/Stream/RawStreamNetworkReader.cs | 10+++++-----
MNetSharp/NetSharp/Raw/Stream/RawStreamNetworkWriter.cs | 26+++++++++++++-------------
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); }