commit ad902fdd4a8c07adc5fab988ad2c58d17a4b9106
parent 88a598c295266260b3f6bc2a01b3715ca7ee85ef
Author: Mikolaj Lenczewski <mikolaj.lenczewski308@gmail.com>
Date: Tue, 9 Jun 2020 18:54:14 +0100
Fixed Memory<>.CopyTo issue with RawStreamNetworkReader
Diffstat:
7 files changed, 105 insertions(+), 162 deletions(-)
diff --git a/NetSharp/NetSharp/NetSharp.xml b/NetSharp/NetSharp/NetSharp.xml
@@ -55,31 +55,22 @@
<member name="M:NetSharp.Raw.Datagram.RawDatagramNetworkWriter.WriteAsync(System.Net.EndPoint,System.ReadOnlyMemory{System.Byte},System.Net.Sockets.SocketFlags)">
<inheritdoc />
</member>
- <member name="P:NetSharp.Raw.DatagramRawNetworkTransportProvider.TransportProtocolType">
+ <member name="P:NetSharp.Raw.RawDatagramNetworkTransportProvider.TransportProtocolType">
<inheritdoc />
</member>
- <member name="M:NetSharp.Raw.DatagramRawNetworkTransportProvider.GetReader(System.Net.Sockets.Socket@,System.Net.EndPoint,NetSharp.Raw.Datagram.RawDatagramRequestHandler,System.Int32,System.Int32,System.UInt32)">
+ <member name="M:NetSharp.Raw.RawDatagramNetworkTransportProvider.GetReader(System.Net.Sockets.Socket@,System.Net.EndPoint,NetSharp.Raw.Datagram.RawDatagramRequestHandler,System.Int32,System.Int32,System.UInt32)">
<inheritdoc />
</member>
- <member name="M:NetSharp.Raw.DatagramRawNetworkTransportProvider.GetWriter(System.Net.Sockets.Socket@,System.Net.EndPoint,System.Int32,System.Int32,System.UInt32)">
+ <member name="M:NetSharp.Raw.RawDatagramNetworkTransportProvider.GetWriter(System.Net.Sockets.Socket@,System.Net.EndPoint,System.Int32,System.Int32,System.UInt32)">
<inheritdoc />
</member>
- <member name="P:NetSharp.Raw.FixedPacketRawStreamNetworkTransportProvider.TransportProtocolType">
+ <member name="P:NetSharp.Raw.RawStreamNetworkTransportProvider.TransportProtocolType">
<inheritdoc />
</member>
- <member name="M:NetSharp.Raw.FixedPacketRawStreamNetworkTransportProvider.GetReader(System.Net.Sockets.Socket@,System.Net.EndPoint,NetSharp.Raw.Stream.RawStreamRequestHandler,System.Int32,System.Int32,System.UInt32)">
+ <member name="M:NetSharp.Raw.RawStreamNetworkTransportProvider.GetReader(System.Net.Sockets.Socket@,System.Net.EndPoint,NetSharp.Raw.Stream.RawStreamRequestHandler,System.Int32,System.Int32,System.UInt32)">
<inheritdoc />
</member>
- <member name="M:NetSharp.Raw.FixedPacketRawStreamNetworkTransportProvider.GetWriter(System.Net.Sockets.Socket@,System.Net.EndPoint,System.Int32,System.Int32,System.UInt32)">
- <inheritdoc />
- </member>
- <member name="P:NetSharp.Raw.VariablePacketRawStreamNetworkTransportProvider.TransportProtocolType">
- <inheritdoc />
- </member>
- <member name="M:NetSharp.Raw.VariablePacketRawStreamNetworkTransportProvider.GetReader(System.Net.Sockets.Socket@,System.Net.EndPoint,NetSharp.Raw.Stream.RawStreamRequestHandler,System.Int32,System.Int32,System.UInt32)">
- <inheritdoc />
- </member>
- <member name="M:NetSharp.Raw.VariablePacketRawStreamNetworkTransportProvider.GetWriter(System.Net.Sockets.Socket@,System.Net.EndPoint,System.Int32,System.Int32,System.UInt32)">
+ <member name="M:NetSharp.Raw.RawStreamNetworkTransportProvider.GetWriter(System.Net.Sockets.Socket@,System.Net.EndPoint,System.Int32,System.Int32,System.UInt32)">
<inheritdoc />
</member>
<member name="M:NetSharp.Raw.RawNetworkConnectionBase.Dispose(System.Boolean)">
@@ -123,39 +114,6 @@
<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.FixedPacketRawStreamNetworkReader.#ctor(System.Net.Sockets.Socket@,NetSharp.Raw.Stream.RawStreamRequestHandler,System.Net.EndPoint,System.Int32,System.Int32,System.UInt32)">
- <inheritdoc />
- </member>
- <member name="M:NetSharp.Raw.Stream.FixedPacketRawStreamNetworkReader.CompleteAccept(System.Net.Sockets.SocketAsyncEventArgs)">
- <inheritdoc />
- </member>
- <member name="M:NetSharp.Raw.Stream.FixedPacketRawStreamNetworkReader.CompleteReceive(System.Net.Sockets.SocketAsyncEventArgs)">
- <inheritdoc />
- </member>
- <member name="M:NetSharp.Raw.Stream.FixedPacketRawStreamNetworkReader.CompleteSend(System.Net.Sockets.SocketAsyncEventArgs)">
- <inheritdoc />
- </member>
- <member name="M:NetSharp.Raw.Stream.FixedPacketRawStreamNetworkWriter.#ctor(System.Net.Sockets.Socket@,System.Net.EndPoint,System.Int32,System.Int32,System.UInt32)">
- <inheritdoc />
- </member>
- <member name="M:NetSharp.Raw.Stream.FixedPacketRawStreamNetworkWriter.CompleteReceive(System.Net.Sockets.SocketAsyncEventArgs)">
- <inheritdoc />
- </member>
- <member name="M:NetSharp.Raw.Stream.FixedPacketRawStreamNetworkWriter.CompleteSend(System.Net.Sockets.SocketAsyncEventArgs)">
- <inheritdoc />
- </member>
- <member name="M:NetSharp.Raw.Stream.FixedPacketRawStreamNetworkWriter.Read(System.Net.EndPoint@,System.Memory{System.Byte},System.Net.Sockets.SocketFlags)">
- <inheritdoc />
- </member>
- <member name="M:NetSharp.Raw.Stream.FixedPacketRawStreamNetworkWriter.ReadAsync(System.Net.EndPoint,System.Memory{System.Byte},System.Net.Sockets.SocketFlags)">
- <inheritdoc />
- </member>
- <member name="M:NetSharp.Raw.Stream.FixedPacketRawStreamNetworkWriter.Write(System.Net.EndPoint,System.ReadOnlyMemory{System.Byte},System.Net.Sockets.SocketFlags)">
- <inheritdoc />
- </member>
- <member name="M:NetSharp.Raw.Stream.FixedPacketRawStreamNetworkWriter.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.Stream.RawStreamRequestHandler,System.Net.EndPoint,System.Int32,System.Int32,System.UInt32)">
<inheritdoc />
</member>
@@ -195,39 +153,6 @@
<member name="M:NetSharp.Raw.Stream.RawStreamNetworkWriter.ConnectAsync(System.Net.EndPoint)">
<inheritdoc />
</member>
- <member name="M:NetSharp.Raw.Stream.VariablePacketRawStreamNetworkReader.#ctor(System.Net.Sockets.Socket@,NetSharp.Raw.Stream.RawStreamRequestHandler,System.Net.EndPoint,System.Int32,System.Int32,System.UInt32)">
- <inheritdoc />
- </member>
- <member name="M:NetSharp.Raw.Stream.VariablePacketRawStreamNetworkReader.CompleteAccept(System.Net.Sockets.SocketAsyncEventArgs)">
- <inheritdoc />
- </member>
- <member name="M:NetSharp.Raw.Stream.VariablePacketRawStreamNetworkReader.CompleteReceive(System.Net.Sockets.SocketAsyncEventArgs)">
- <inheritdoc />
- </member>
- <member name="M:NetSharp.Raw.Stream.VariablePacketRawStreamNetworkReader.CompleteSend(System.Net.Sockets.SocketAsyncEventArgs)">
- <inheritdoc />
- </member>
- <member name="M:NetSharp.Raw.Stream.VariablePacketRawStreamNetworkWriter.#ctor(System.Net.Sockets.Socket@,System.Net.EndPoint,System.Int32,System.Int32,System.UInt32)">
- <inheritdoc />
- </member>
- <member name="M:NetSharp.Raw.Stream.VariablePacketRawStreamNetworkWriter.CompleteReceive(System.Net.Sockets.SocketAsyncEventArgs)">
- <inheritdoc />
- </member>
- <member name="M:NetSharp.Raw.Stream.VariablePacketRawStreamNetworkWriter.CompleteSend(System.Net.Sockets.SocketAsyncEventArgs)">
- <inheritdoc />
- </member>
- <member name="M:NetSharp.Raw.Stream.VariablePacketRawStreamNetworkWriter.Read(System.Net.EndPoint@,System.Memory{System.Byte},System.Net.Sockets.SocketFlags)">
- <inheritdoc />
- </member>
- <member name="M:NetSharp.Raw.Stream.VariablePacketRawStreamNetworkWriter.ReadAsync(System.Net.EndPoint,System.Memory{System.Byte},System.Net.Sockets.SocketFlags)">
- <inheritdoc />
- </member>
- <member name="M:NetSharp.Raw.Stream.VariablePacketRawStreamNetworkWriter.Write(System.Net.EndPoint,System.ReadOnlyMemory{System.Byte},System.Net.Sockets.SocketFlags)">
- <inheritdoc />
- </member>
- <member name="M:NetSharp.Raw.Stream.VariablePacketRawStreamNetworkWriter.WriteAsync(System.Net.EndPoint,System.ReadOnlyMemory{System.Byte},System.Net.Sockets.SocketFlags)">
- <inheritdoc />
- </member>
<member name="T:NetSharp.Utils.BiDictionary`2">
<summary>
Represents a concurrent two-way dictionary, that can be indexed by either a key or a value.
diff --git a/NetSharp/NetSharp/Raw/Stream/RawStreamNetworkReader.cs b/NetSharp/NetSharp/Raw/Stream/RawStreamNetworkReader.cs
@@ -67,21 +67,21 @@ namespace NetSharp.Raw.Stream
private void CompleteReceive(SocketAsyncEventArgs args)
{
- void CompleteReceiveHeader(SocketAsyncEventArgs args)
+ RequestReadToken readToken = (RequestReadToken) args.UserToken;
+
+ void CompleteReceiveHeader(SocketAsyncEventArgs args, in RequestReadToken readToken)
{
Memory<byte> headerBuffer = args.Buffer;
int receivedBytes = args.BytesTransferred,
previousReceivedBytes = args.Offset,
totalReceivedBytes = previousReceivedBytes + receivedBytes,
- expectedBytes = args.Buffer.Length;
+ expectedBytes = readToken.BytesToTransfer;
if (totalReceivedBytes == expectedBytes) // transmission complete
{
RawStreamPacketHeader header = RawStreamPacketHeader.Deserialise(in headerBuffer);
- args.UserToken = header; // allow the header to be used in the CompleteReceiveData method
-
ConfigureReceiveData(args, in header);
StartReceive(args);
}
@@ -97,26 +97,26 @@ namespace NetSharp.Raw.Stream
}
}
- void CompleteReceiveData(SocketAsyncEventArgs args)
+ void CompleteReceiveData(SocketAsyncEventArgs args, in RequestReadToken readToken)
{
Memory<byte> dataBuffer = args.Buffer;
- RawStreamPacketHeader requestPacketHeader = (RawStreamPacketHeader) args.UserToken;
int receivedBytes = args.BytesTransferred,
previousReceivedBytes = args.Offset,
totalReceivedBytes = previousReceivedBytes + receivedBytes,
- expectedBytes = args.Buffer.Length;
+ expectedBytes = readToken.BytesToTransfer;
if (totalReceivedBytes == expectedBytes) // transmission complete
{
EndPoint clientEndPoint = args.AcceptSocket.RemoteEndPoint;
// TODO use user-supplied delegate to get response packet size
- int responseBufferSize = RawStreamPacket.TotalPacketSize(expectedBytes);
+ int responseBufferDataSize = expectedBytes;
+ int responseBufferSize = RawStreamPacket.TotalPacketSize(responseBufferDataSize);
byte[] responseBuffer = BufferPool.Rent(responseBufferSize);
- Memory<byte> responseBufferMemory = responseBuffer[RawStreamPacketHeader.TotalSize..expectedBytes];
+ Memory<byte> responseBufferMemory = responseBuffer.AsMemory(RawStreamPacketHeader.TotalSize, responseBufferDataSize);
// TODO rework request handler
bool responseExists = RequestHandler(clientEndPoint, dataBuffer, totalReceivedBytes, responseBufferMemory);
@@ -124,7 +124,7 @@ namespace NetSharp.Raw.Stream
switch (responseExists)
{
case true:
- RawStreamPacket response = new RawStreamPacket(in responseBufferMemory);
+ RawStreamPacket response = new RawStreamPacket(in responseBufferMemory, responseBufferDataSize);
ConfigureSendResponse(args, ref responseBuffer, in response);
StartSend(args);
@@ -152,7 +152,7 @@ namespace NetSharp.Raw.Stream
}
}
- bool receivingHeader = args.Buffer.Length == RawStreamPacketHeader.TotalSize;
+ bool receivingHeader = readToken.BytesToTransfer == RawStreamPacketHeader.TotalSize;
switch (args.SocketError)
{
@@ -160,11 +160,11 @@ namespace NetSharp.Raw.Stream
switch (receivingHeader)
{
case true:
- CompleteReceiveHeader(args);
+ CompleteReceiveHeader(args, in readToken);
break;
case false:
- CompleteReceiveData(args);
+ CompleteReceiveData(args, in readToken);
break;
}
break;
@@ -177,10 +177,12 @@ namespace NetSharp.Raw.Stream
private void CompleteSend(SocketAsyncEventArgs args)
{
+ ResponseWriteToken writeToken = (ResponseWriteToken) args.UserToken;
+
int sentBytes = args.BytesTransferred,
previousSentBytes = args.Offset,
totalSentBytes = previousSentBytes + sentBytes,
- expectedBytes = args.Buffer.Length;
+ expectedBytes = writeToken.BytesToTransfer;
switch (args.SocketError)
{
@@ -214,7 +216,8 @@ namespace NetSharp.Raw.Stream
byte[] pendingPacketDataBuffer = BufferPool.Rent(receivedPacketHeader.DataSize);
- args.SetBuffer(pendingPacketDataBuffer, 0, pendingPacketDataBuffer.Length);
+ args.SetBuffer(pendingPacketDataBuffer, 0, receivedPacketHeader.DataSize);
+ args.UserToken = new RequestReadToken(receivedPacketHeader.DataSize, receivedPacketHeader);
}
private void ConfigureReceiveHeader(SocketAsyncEventArgs args)
@@ -223,7 +226,8 @@ namespace NetSharp.Raw.Stream
byte[] pendingPacketHeaderBuffer = BufferPool.Rent(RawStreamPacketHeader.TotalSize);
- args.SetBuffer(pendingPacketHeaderBuffer, 0, pendingPacketHeaderBuffer.Length);
+ args.SetBuffer(pendingPacketHeaderBuffer, 0, RawStreamPacketHeader.TotalSize);
+ args.UserToken = new RequestReadToken(RawStreamPacketHeader.TotalSize, null);
}
private void ConfigureSendResponse(SocketAsyncEventArgs args, ref byte[] pendingPacketBuffer, in RawStreamPacket pendingPacket)
@@ -232,7 +236,8 @@ namespace NetSharp.Raw.Stream
pendingPacket.Serialise(pendingPacketBuffer);
- args.SetBuffer(pendingPacketBuffer, 0, pendingPacketBuffer.Length);
+ args.SetBuffer(pendingPacketBuffer, 0, pendingPacket.TotalSize);
+ args.UserToken = new ResponseWriteToken(pendingPacket.TotalSize);
}
private void ContinueReceive(SocketAsyncEventArgs args)
@@ -389,5 +394,28 @@ namespace NetSharp.Raw.Stream
StartDefaultAccept();
}
}
+
+ private readonly struct RequestReadToken
+ {
+ public readonly int BytesToTransfer;
+ public readonly RawStreamPacketHeader? Header;
+
+ public RequestReadToken(int bytesToTransfer, in RawStreamPacketHeader? header)
+ {
+ BytesToTransfer = bytesToTransfer;
+
+ Header = header;
+ }
+ }
+
+ private readonly struct ResponseWriteToken
+ {
+ public readonly int BytesToTransfer;
+
+ public ResponseWriteToken(int bytesToTransfer)
+ {
+ BytesToTransfer = bytesToTransfer;
+ }
+ }
}
}
\ No newline at end of file
diff --git a/NetSharp/NetSharp/Raw/Stream/RawStreamNetworkWriter.cs b/NetSharp/NetSharp/Raw/Stream/RawStreamNetworkWriter.cs
@@ -6,10 +6,10 @@ using System.Threading.Tasks;
namespace NetSharp.Raw.Stream
{
- public abstract class RawStreamNetworkWriter : RawNetworkWriterBase
+ public sealed class RawStreamNetworkWriter : RawNetworkWriterBase
{
/// <inheritdoc />
- protected RawStreamNetworkWriter(ref Socket rawConnection, EndPoint defaultEndPoint, int maxMessageSize, int pooledBuffersPerBucket = 50,
+ public RawStreamNetworkWriter(ref Socket rawConnection, EndPoint defaultEndPoint, int maxMessageSize, int pooledBuffersPerBucket = 50,
uint preallocatedStateObjects = 0) : base(ref rawConnection, defaultEndPoint, maxMessageSize, pooledBuffersPerBucket, preallocatedStateObjects)
{
if (maxMessageSize <= 0)
@@ -65,6 +65,14 @@ namespace NetSharp.Raw.Stream
ArgsPool.Return(args);
}
+ private void CompleteReceive(SocketAsyncEventArgs args)
+ {
+ }
+
+ private void CompleteSend(SocketAsyncEventArgs args)
+ {
+ }
+
private void HandleIoCompleted(object sender, SocketAsyncEventArgs args)
{
switch (args.LastOperation)
@@ -88,15 +96,11 @@ namespace NetSharp.Raw.Stream
}
/// <inheritdoc />
- protected sealed override bool CanReuseStateObject(ref SocketAsyncEventArgs instance)
+ protected override bool CanReuseStateObject(ref SocketAsyncEventArgs instance)
{
return true;
}
- protected abstract void CompleteReceive(SocketAsyncEventArgs args);
-
- protected abstract void CompleteSend(SocketAsyncEventArgs args);
-
[MethodImpl(MethodImplOptions.AggressiveInlining)]
protected void ContinueReceive(SocketAsyncEventArgs args)
{
@@ -120,7 +124,7 @@ namespace NetSharp.Raw.Stream
}
/// <inheritdoc />
- protected sealed override SocketAsyncEventArgs CreateStateObject()
+ protected override SocketAsyncEventArgs CreateStateObject()
{
SocketAsyncEventArgs args = new SocketAsyncEventArgs();
args.Completed += HandleIoCompleted;
@@ -129,25 +133,25 @@ namespace NetSharp.Raw.Stream
}
/// <inheritdoc />
- protected sealed override void DestroyStateObject(SocketAsyncEventArgs instance)
+ protected override void DestroyStateObject(SocketAsyncEventArgs instance)
{
instance.Completed -= HandleIoCompleted;
instance.Dispose();
}
/// <inheritdoc />
- protected sealed override void ResetStateObject(ref SocketAsyncEventArgs instance)
+ protected override void ResetStateObject(ref SocketAsyncEventArgs instance)
{
}
/// <inheritdoc />
- public sealed override void Connect(EndPoint remoteEndPoint)
+ public override void Connect(EndPoint remoteEndPoint)
{
Connection.Connect(remoteEndPoint);
}
/// <inheritdoc />
- public sealed override ValueTask ConnectAsync(EndPoint remoteEndPoint)
+ public override ValueTask ConnectAsync(EndPoint remoteEndPoint)
{
TaskCompletionSource<bool> tcs = new TaskCompletionSource<bool>();
SocketAsyncEventArgs args = ArgsPool.Rent();
@@ -191,5 +195,25 @@ namespace NetSharp.Raw.Stream
return new ValueTask();
}
+
+ public override int Read(ref EndPoint remoteEndPoint, Memory<byte> readBuffer, SocketFlags flags = SocketFlags.None)
+ {
+ throw new NotImplementedException();
+ }
+
+ public override ValueTask<int> ReadAsync(EndPoint remoteEndPoint, Memory<byte> readBuffer, SocketFlags flags = SocketFlags.None)
+ {
+ throw new NotImplementedException();
+ }
+
+ public override int Write(EndPoint remoteEndPoint, ReadOnlyMemory<byte> writeBuffer, SocketFlags flags = SocketFlags.None)
+ {
+ throw new NotImplementedException();
+ }
+
+ public override ValueTask<int> WriteAsync(EndPoint remoteEndPoint, ReadOnlyMemory<byte> writeBuffer, SocketFlags flags = SocketFlags.None)
+ {
+ throw new NotImplementedException();
+ }
}
}
\ No newline at end of file
diff --git a/NetSharp/NetSharp/Raw/Stream/RawStreamPacket.cs b/NetSharp/NetSharp/Raw/Stream/RawStreamPacket.cs
@@ -17,13 +17,15 @@ namespace NetSharp.Raw.Stream
Data = packetData;
}
- public RawStreamPacket(in Memory<byte> packetData)
+ public RawStreamPacket(in Memory<byte> packetData, int packetDataSize)
{
- Header = new RawStreamPacketHeader(packetData.Length);
+ Header = new RawStreamPacketHeader(packetDataSize);
Data = packetData;
}
+ public int TotalSize => RawStreamPacketHeader.TotalSize + Data.Length;
+
public static RawStreamPacket Deserialise(in Memory<byte> buffer)
{
Memory<byte> serialisedHeader = buffer.Slice(0, RawStreamPacketHeader.TotalSize);
diff --git a/NetSharp/NetSharp/Utils/SlimObjectPool.cs b/NetSharp/NetSharp/Utils/SlimObjectPool.cs
@@ -9,7 +9,7 @@ namespace NetSharp.Utils
/// <typeparam name="T">
/// The type of item stored in the pool.
/// </typeparam>
- public readonly struct SlimObjectPool<T> : IDisposable where T : class
+ public sealed class SlimObjectPool<T> : IDisposable where T : class
{
private readonly CanRebufferObjectPredicate canObjectBeRebufferedPredicate;
diff --git a/NetSharp/NetSharpExamples/Benchmarks/Stream Network Connection Benchmarks/StreamNetworkReaderBenchmark.cs b/NetSharp/NetSharpExamples/Benchmarks/Stream Network Connection Benchmarks/StreamNetworkReaderBenchmark.cs
@@ -60,7 +60,7 @@ namespace NetSharpExamples.Benchmarks.Stream_Network_Connection_Benchmarks
{
ServerEncoding.GetBytes($"[Client {id}] Hello World! (Packet {i})").CopyTo(packetBuffer, 0);
- RawStreamPacket streamPacket = new RawStreamPacket(packetBuffer);
+ RawStreamPacket streamPacket = new RawStreamPacket(packetBuffer, PacketSize);
streamPacket.Serialise(sendBuffer);
benchmarkHelper.StartStopwatch();
diff --git a/NetSharp/NetSharpExamples/NetSharpExamples.xml b/NetSharp/NetSharpExamples/NetSharpExamples.xml
@@ -22,40 +22,22 @@
<member name="M:NetSharpExamples.Benchmarks.Datagram_Network_Connection_Benchmarks.DatagramNetworkWriterSyncBenchmark.RunAsync">
<inheritdoc />
</member>
- <member name="P:NetSharpExamples.Benchmarks.Stream_Network_Connection_Benchmarks.FixedPacketStreamNetworkReaderBenchmark.Name">
+ <member name="P:NetSharpExamples.Benchmarks.Stream_Network_Connection_Benchmarks.StreamNetworkReaderBenchmark.Name">
<inheritdoc />
</member>
- <member name="M:NetSharpExamples.Benchmarks.Stream_Network_Connection_Benchmarks.FixedPacketStreamNetworkReaderBenchmark.RunAsync">
+ <member name="M:NetSharpExamples.Benchmarks.Stream_Network_Connection_Benchmarks.StreamNetworkReaderBenchmark.RunAsync">
<inheritdoc />
</member>
- <member name="P:NetSharpExamples.Benchmarks.Stream_Network_Connection_Benchmarks.FixedPacketStreamNetworkWriterAsyncBenchmark.Name">
+ <member name="P:NetSharpExamples.Benchmarks.Stream_Network_Connection_Benchmarks.StreamNetworkWriterAsyncBenchmark.Name">
<inheritdoc />
</member>
- <member name="M:NetSharpExamples.Benchmarks.Stream_Network_Connection_Benchmarks.FixedPacketStreamNetworkWriterAsyncBenchmark.RunAsync">
+ <member name="M:NetSharpExamples.Benchmarks.Stream_Network_Connection_Benchmarks.StreamNetworkWriterAsyncBenchmark.RunAsync">
<inheritdoc />
</member>
- <member name="P:NetSharpExamples.Benchmarks.Stream_Network_Connection_Benchmarks.FixedPacketStreamNetworkWriterSyncBenchmark.Name">
+ <member name="P:NetSharpExamples.Benchmarks.Stream_Network_Connection_Benchmarks.StreamNetworkWriterSyncBenchmark.Name">
<inheritdoc />
</member>
- <member name="M:NetSharpExamples.Benchmarks.Stream_Network_Connection_Benchmarks.FixedPacketStreamNetworkWriterSyncBenchmark.RunAsync">
- <inheritdoc />
- </member>
- <member name="P:NetSharpExamples.Benchmarks.Stream_Network_Connection_Benchmarks.VariablePacketStreamNetworkReaderBenchmark.Name">
- <inheritdoc />
- </member>
- <member name="M:NetSharpExamples.Benchmarks.Stream_Network_Connection_Benchmarks.VariablePacketStreamNetworkReaderBenchmark.RunAsync">
- <inheritdoc />
- </member>
- <member name="P:NetSharpExamples.Benchmarks.Stream_Network_Connection_Benchmarks.VariablePacketStreamNetworkWriterAsyncBenchmark.Name">
- <inheritdoc />
- </member>
- <member name="M:NetSharpExamples.Benchmarks.Stream_Network_Connection_Benchmarks.VariablePacketStreamNetworkWriterAsyncBenchmark.RunAsync">
- <inheritdoc />
- </member>
- <member name="P:NetSharpExamples.Benchmarks.Stream_Network_Connection_Benchmarks.VariablePacketStreamNetworkWriterSyncBenchmark.Name">
- <inheritdoc />
- </member>
- <member name="M:NetSharpExamples.Benchmarks.Stream_Network_Connection_Benchmarks.VariablePacketStreamNetworkWriterSyncBenchmark.RunAsync">
+ <member name="M:NetSharpExamples.Benchmarks.Stream_Network_Connection_Benchmarks.StreamNetworkWriterSyncBenchmark.RunAsync">
<inheritdoc />
</member>
<member name="P:NetSharpExamples.Examples.Datagram_Network_Connection_Examples.DatagramNetworkReaderExample.Name">
@@ -76,40 +58,22 @@
<member name="M:NetSharpExamples.Examples.Datagram_Network_Connection_Examples.DatagramNetworkWriterSyncExample.RunAsync">
<inheritdoc />
</member>
- <member name="P:NetSharpExamples.Examples.Stream_Network_Connection_Examples.FixedPacketStreamNetworkReaderExample.Name">
- <inheritdoc />
- </member>
- <member name="M:NetSharpExamples.Examples.Stream_Network_Connection_Examples.FixedPacketStreamNetworkReaderExample.RunAsync">
- <inheritdoc />
- </member>
- <member name="P:NetSharpExamples.Examples.Stream_Network_Connection_Examples.FixedPacketStreamNetworkWriterAsyncExample.Name">
- <inheritdoc />
- </member>
- <member name="M:NetSharpExamples.Examples.Stream_Network_Connection_Examples.FixedPacketStreamNetworkWriterAsyncExample.RunAsync">
- <inheritdoc />
- </member>
- <member name="P:NetSharpExamples.Examples.Stream_Network_Connection_Examples.FixedPacketStreamNetworkWriterSyncExample.Name">
- <inheritdoc />
- </member>
- <member name="M:NetSharpExamples.Examples.Stream_Network_Connection_Examples.FixedPacketStreamNetworkWriterSyncExample.RunAsync">
- <inheritdoc />
- </member>
- <member name="P:NetSharpExamples.Examples.Stream_Network_Connection_Examples.VariablePacketStreamNetworkReaderExample.Name">
+ <member name="P:NetSharpExamples.Examples.Stream_Network_Connection_Examples.StreamNetworkReaderExample.Name">
<inheritdoc />
</member>
- <member name="M:NetSharpExamples.Examples.Stream_Network_Connection_Examples.VariablePacketStreamNetworkReaderExample.RunAsync">
+ <member name="M:NetSharpExamples.Examples.Stream_Network_Connection_Examples.StreamNetworkReaderExample.RunAsync">
<inheritdoc />
</member>
- <member name="P:NetSharpExamples.Examples.Stream_Network_Connection_Examples.VariablePacketStreamNetworkWriterAsyncExample.Name">
+ <member name="P:NetSharpExamples.Examples.Stream_Network_Connection_Examples.StreamNetworkWriterAsyncExample.Name">
<inheritdoc />
</member>
- <member name="M:NetSharpExamples.Examples.Stream_Network_Connection_Examples.VariablePacketStreamNetworkWriterAsyncExample.RunAsync">
+ <member name="M:NetSharpExamples.Examples.Stream_Network_Connection_Examples.StreamNetworkWriterAsyncExample.RunAsync">
<inheritdoc />
</member>
- <member name="P:NetSharpExamples.Examples.Stream_Network_Connection_Examples.VariablePacketStreamNetworkWriterSyncExample.Name">
+ <member name="P:NetSharpExamples.Examples.Stream_Network_Connection_Examples.StreamNetworkWriterSyncExample.Name">
<inheritdoc />
</member>
- <member name="M:NetSharpExamples.Examples.Stream_Network_Connection_Examples.VariablePacketStreamNetworkWriterSyncExample.RunAsync">
+ <member name="M:NetSharpExamples.Examples.Stream_Network_Connection_Examples.StreamNetworkWriterSyncExample.RunAsync">
<inheritdoc />
</member>
<member name="T:NetSharpExamples.INetSharpExample">