NetSharp

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

commit e5a4d11735c7f2eedfa866760c787f5092adcb90
parent b742d448ea3d3b599950edc1019eecc05666de24
Author: Mikolaj Lenczewski <mikolaj.lenczewski308@gmail.com>
Date:   Fri,  8 May 2020 20:26:10 +0100

Fully removed generic state parameter

Diffstat:
MNetSharp/NetSharp/Connection.cs | 108+++----------------------------------------------------------------------------
MNetSharp/NetSharp/ConnectionBuilder.cs | 4+---
MNetSharp/NetSharp/NetSharp.xml | 28++++++++++++++--------------
MNetSharp/NetSharp/Raw/IRawNetworkTransportProvider.cs | 25++++++++++++++++---------
4 files changed, 35 insertions(+), 130 deletions(-)

diff --git a/NetSharp/NetSharp/Connection.cs b/NetSharp/NetSharp/Connection.cs @@ -12,7 +12,7 @@ namespace NetSharp { /// <inheritdoc /> internal Connection(AddressFamily addressFamily, SocketType socketType, ProtocolType protocolType, - IRawNetworkTransportProvider<SocketAsyncEventArgs> transportProvider, EndPoint defaultEndPoint, int packetBufferSize, + IRawNetworkTransportProvider transportProvider, EndPoint defaultEndPoint, int packetBufferSize, int pooledBuffersPerBucket, uint preallocatedStateObjects) : base(addressFamily, socketType, protocolType, transportProvider, defaultEndPoint, packetBufferSize, pooledBuffersPerBucket, preallocatedStateObjects) { @@ -82,12 +82,12 @@ namespace NetSharp { private readonly Socket connection; - protected readonly RawNetworkReaderBase<SocketAsyncEventArgs> Reader; + protected readonly RawNetworkReaderBase Reader; - protected readonly RawNetworkWriterBase<SocketAsyncEventArgs> Writer; + protected readonly RawNetworkWriterBase Writer; private protected ConnectionBase(AddressFamily addressFamily, SocketType socketType, ProtocolType protocolType, - IRawNetworkTransportProvider<SocketAsyncEventArgs> transportProvider, EndPoint defaultEndPoint, int packetBufferSize, + IRawNetworkTransportProvider transportProvider, EndPoint defaultEndPoint, int packetBufferSize, int pooledBuffersPerBucket, uint preallocatedStateObjects) { connection = new Socket(addressFamily, socketType, protocolType); @@ -148,104 +148,4 @@ namespace NetSharp public abstract ValueTask<int> WriteAsync(EndPoint remoteEndPoint, ReadOnlyMemory<byte> writeBuffer, SocketFlags flags = SocketFlags.None); } - - public sealed class ConnectionBuilder - { - public static ConfiguredConnectionBuilder WithCustomTransport(IRawNetworkTransportProvider<SocketAsyncEventArgs> transportProvider, - ProtocolType transportProtocol) - { - return new ConfiguredConnectionBuilder(transportProvider, transportProtocol); - } - - public static ConfiguredConnectionBuilder WithDatagramTransport(ProtocolType transportProtocol = ProtocolType.Udp) => - WithCustomTransport(new DatagramRawNetworkTransportProvider(), transportProtocol); - - public static ConfiguredConnectionBuilder WithStreamTransport(ProtocolType transportProtocol = ProtocolType.Tcp) => - WithCustomTransport(new StreamRawNetworkTransportProvider(), transportProtocol); - - public sealed class ConfiguredConnectionBuilder - { - private readonly IRawNetworkTransportProvider<SocketAsyncEventArgs> transportProvider; - - internal ConfiguredConnectionBuilder(IRawNetworkTransportProvider<SocketAsyncEventArgs> 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<SocketAsyncEventArgs> transportProvider; - - internal CompletedConnectionBuilder( - IRawNetworkTransportProvider<SocketAsyncEventArgs> 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/ConnectionBuilder.cs b/NetSharp/NetSharp/ConnectionBuilder.cs @@ -4,14 +4,13 @@ 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) => + public static ConfiguredConnectionBuilder WithDatagramTransport(ushort datagramSize = 8192, ProtocolType transportProtocol = ProtocolType.Udp) => WithCustomTransport(new DatagramRawNetworkTransportProvider(datagramSize), transportProtocol); public static ConfiguredConnectionBuilder WithStreamTransport(ProtocolType transportProtocol = ProtocolType.Tcp) => @@ -102,5 +101,4 @@ namespace NetSharp } } } - */ } \ No newline at end of file diff --git a/NetSharp/NetSharp/NetSharp.xml b/NetSharp/NetSharp/NetSharp.xml @@ -4,7 +4,7 @@ <name>NetSharp</name> </assembly> <members> - <member name="M:NetSharp.Connection.#ctor(System.Net.Sockets.AddressFamily,System.Net.Sockets.SocketType,System.Net.Sockets.ProtocolType,NetSharp.Raw.IRawNetworkTransportProvider{System.Net.Sockets.SocketAsyncEventArgs},System.Net.EndPoint,System.Int32,System.Int32,System.UInt32)"> + <member name="M:NetSharp.Connection.#ctor(System.Net.Sockets.AddressFamily,System.Net.Sockets.SocketType,System.Net.Sockets.ProtocolType,NetSharp.Raw.IRawNetworkTransportProvider,System.Net.EndPoint,System.Int32,System.Int32,System.UInt32)"> <inheritdoc /> </member> <member name="M:NetSharp.Connection.HandleRawPacketReceived(System.Net.EndPoint@,System.ReadOnlyMemory{System.Byte},System.Int32,System.Memory{System.Byte})"> @@ -283,45 +283,45 @@ <member name="M:NetSharp.Raw.StreamRawNetworkTransportProvider.GetWriter(System.Net.Sockets.Socket@,System.Net.EndPoint,System.Int32,System.Int32,System.UInt32)"> <inheritdoc /> </member> - <member name="M:NetSharp.Raw.RawNetworkConnectionBase`1.Dispose(System.Boolean)"> + <member name="M:NetSharp.Raw.RawNetworkConnectionBase.Dispose(System.Boolean)"> <summary> Allows for inheritors to dispose of their own resources. </summary> </member> - <member name="M:NetSharp.Raw.RawNetworkConnectionBase`1.Dispose"> + <member name="M:NetSharp.Raw.RawNetworkConnectionBase.Dispose"> <inheritdoc /> </member> - <member name="M:NetSharp.Raw.RawNetworkReaderBase`1.#ctor(System.Net.Sockets.Socket@,System.Net.EndPoint,NetSharp.Raw.NetworkRequestHandler,System.Int32,System.Int32,System.UInt32)"> + <member name="M:NetSharp.Raw.RawNetworkReaderBase.#ctor(System.Net.Sockets.Socket@,System.Net.EndPoint,NetSharp.Raw.NetworkRequestHandler,System.Int32,System.Int32,System.UInt32)"> <inheritdoc /> </member> - <member name="M:NetSharp.Raw.RawNetworkReaderBase`1.Dispose(System.Boolean)"> + <member name="M:NetSharp.Raw.RawNetworkReaderBase.Dispose(System.Boolean)"> <inheritdoc /> </member> - <member name="M:NetSharp.Raw.RawNetworkReaderBase`1.Start(System.UInt16)"> + <member name="M:NetSharp.Raw.RawNetworkReaderBase.Start(System.UInt16)"> <inheritdoc /> </member> - <member name="M:NetSharp.Raw.RawNetworkReaderBase`1.Stop"> + <member name="M:NetSharp.Raw.RawNetworkReaderBase.Stop"> <inheritdoc /> </member> - <member name="M:NetSharp.Raw.RawNetworkWriterBase`1.#ctor(System.Net.Sockets.Socket@,System.Net.EndPoint,System.Int32,System.Int32,System.UInt32)"> + <member name="M:NetSharp.Raw.RawNetworkWriterBase.#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)"> + <member name="M:NetSharp.Raw.RawNetworkWriterBase.Connect(System.Net.EndPoint)"> <inheritdoc /> </member> - <member name="M:NetSharp.Raw.RawNetworkWriterBase`1.ConnectAsync(System.Net.EndPoint)"> + <member name="M:NetSharp.Raw.RawNetworkWriterBase.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)"> + <member name="M:NetSharp.Raw.RawNetworkWriterBase.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)"> + <member name="M:NetSharp.Raw.RawNetworkWriterBase.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)"> + <member name="M:NetSharp.Raw.RawNetworkWriterBase.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)"> + <member name="M:NetSharp.Raw.RawNetworkWriterBase.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)"> diff --git a/NetSharp/NetSharp/Raw/IRawNetworkTransportProvider.cs b/NetSharp/NetSharp/Raw/IRawNetworkTransportProvider.cs @@ -6,24 +6,31 @@ using System.Net.Sockets; namespace NetSharp.Raw { - public interface IRawNetworkTransportProvider<TState> where TState : class + public interface IRawNetworkTransportProvider { SocketType TransportProtocolType { get; } - RawNetworkReaderBase<TState> GetReader(ref Socket rawConnection, EndPoint defaultEndPoint, NetworkRequestHandler? requestHandler, int maxPooledBufferSize, + RawNetworkReaderBase GetReader(ref Socket rawConnection, EndPoint defaultEndPoint, NetworkRequestHandler? requestHandler, int maxPooledBufferSize, int maxPooledBuffersPerBucket = 1000, uint preallocatedStateObjects = 0); - RawNetworkWriterBase<TState> GetWriter(ref Socket rawConnection, EndPoint defaultEndPoint, int maxPooledBufferSize, int maxPooledBuffersPerBucket = 1000, + RawNetworkWriterBase GetWriter(ref Socket rawConnection, EndPoint defaultEndPoint, int maxPooledBufferSize, int maxPooledBuffersPerBucket = 1000, uint preallocatedStateObjects = 0); } - public sealed class DatagramRawNetworkTransportProvider : IRawNetworkTransportProvider<SocketAsyncEventArgs> + public sealed class DatagramRawNetworkTransportProvider : IRawNetworkTransportProvider { + private readonly ushort datagramSize; + + public DatagramRawNetworkTransportProvider(ushort datagramSize) + { + this.datagramSize = datagramSize; + } + /// <inheritdoc /> public SocketType TransportProtocolType { get; } = SocketType.Dgram; /// <inheritdoc /> - public RawNetworkReaderBase<SocketAsyncEventArgs> GetReader(ref Socket rawConnection, EndPoint defaultEndPoint, + public RawNetworkReaderBase GetReader(ref Socket rawConnection, EndPoint defaultEndPoint, NetworkRequestHandler? requestHandler, int maxPooledBufferSize, int maxPooledBuffersPerBucket = 1000, uint preallocatedStateObjects = 0) { @@ -32,7 +39,7 @@ namespace NetSharp.Raw } /// <inheritdoc /> - public RawNetworkWriterBase<SocketAsyncEventArgs> GetWriter(ref Socket rawConnection, EndPoint defaultEndPoint, int maxPooledBufferSize, + public RawNetworkWriterBase GetWriter(ref Socket rawConnection, EndPoint defaultEndPoint, int maxPooledBufferSize, int maxPooledBuffersPerBucket = 1000, uint preallocatedStateObjects = 0) { return new RawDatagramNetworkWriter(ref rawConnection, defaultEndPoint, maxPooledBufferSize, @@ -40,13 +47,13 @@ namespace NetSharp.Raw } } - public sealed class StreamRawNetworkTransportProvider : IRawNetworkTransportProvider<SocketAsyncEventArgs> + public sealed class StreamRawNetworkTransportProvider : IRawNetworkTransportProvider { /// <inheritdoc /> public SocketType TransportProtocolType { get; } = SocketType.Stream; /// <inheritdoc /> - public RawNetworkReaderBase<SocketAsyncEventArgs> GetReader(ref Socket rawConnection, EndPoint defaultEndPoint, NetworkRequestHandler? requestHandler, + public RawNetworkReaderBase GetReader(ref Socket rawConnection, EndPoint defaultEndPoint, NetworkRequestHandler? requestHandler, int maxPooledBufferSize, int maxPooledBuffersPerBucket = 1000, uint preallocatedStateObjects = 0) { return new RawStreamNetworkReader(ref rawConnection, requestHandler, defaultEndPoint, maxPooledBufferSize, @@ -54,7 +61,7 @@ namespace NetSharp.Raw } /// <inheritdoc /> - public RawNetworkWriterBase<SocketAsyncEventArgs> GetWriter(ref Socket rawConnection, EndPoint defaultEndPoint, int maxPooledBufferSize, + public RawNetworkWriterBase GetWriter(ref Socket rawConnection, EndPoint defaultEndPoint, int maxPooledBufferSize, int maxPooledBuffersPerBucket = 1000, uint preallocatedStateObjects = 0) { return new RawStreamNetworkWriter(ref rawConnection, defaultEndPoint, maxPooledBufferSize,