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:
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,