NetSharp

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

commit 9d931dc2740ae1c0d269493e2ab27f1c6dec0edc
parent e616c6787ffcb5570713f5fa5780eee8dfe8dab9
Author: Mikolaj Lenczewski <mikolaj.lenczewski308@gmail.com>
Date:   Mon,  8 Jun 2020 13:04:12 +0100

new version

Diffstat:
MNetSharp/NetSharp.sln | 5+++++
MNetSharp/NetSharp/Raw/Datagram/RawDatagramNetworkReader.cs | 10++++++++--
MNetSharp/NetSharp/Raw/Datagram/RawDatagramNetworkWriter.cs | 27++++++++++++++++++---------
MNetSharp/NetSharp/Raw/IRawNetworkTransportProvider.cs | 8++++----
MNetSharp/NetSharp/Raw/RawNetworkConnectionBase.cs | 11+++++++----
MNetSharp/NetSharp/Raw/RawNetworkReaderBase.cs | 8+++++---
MNetSharp/NetSharp/Raw/Stream/FixedPacketRawStreamNetworkReader.cs | 4++--
MNetSharp/NetSharp/Raw/Stream/FixedPacketRawStreamNetworkWriter.cs | 22++++++++++++++--------
MNetSharp/NetSharp/Raw/Stream/RawStreamNetworkReader.cs | 25++++++++++++++++++++-----
MNetSharp/NetSharp/Raw/Stream/RawStreamNetworkWriter.cs | 28++++++++++++++++++++--------
MNetSharp/NetSharp/Raw/Stream/RawStreamPacket.cs | 1+
MNetSharp/NetSharp/Raw/Stream/VariablePacketRawStreamNetworkReader.cs | 4++--
MNetSharp/NetSharp/Raw/Stream/VariablePacketRawStreamNetworkWriter.cs | 51++++++++++++++++++++++++++++++++++++++-------------
MNetSharp/NetSharp/Utils/BiDictionary.cs | 14++++++++++----
MNetSharp/NetSharp/Utils/TransmissionResult.cs | 5++++-
MNetSharp/NetSharpExamples/BenchmarkHelper.cs | 10++--------
MNetSharp/NetSharpExamples/Benchmarks/Datagram Network Connection Benchmarks/DatagramNetworkReaderBenchmark.cs | 8++++----
MNetSharp/NetSharpExamples/Benchmarks/Datagram Network Connection Benchmarks/DatagramNetworkWriterAsyncBenchmark.cs | 8++++----
MNetSharp/NetSharpExamples/Benchmarks/Datagram Network Connection Benchmarks/DatagramNetworkWriterSyncBenchmark.cs | 8++++----
MNetSharp/NetSharpExamples/Benchmarks/Stream Network Connection Benchmarks/FixedPacketStreamNetworkReaderBenchmark.cs | 8++++----
MNetSharp/NetSharpExamples/Benchmarks/Stream Network Connection Benchmarks/FixedPacketStreamNetworkWriterAsyncBenchmark.cs | 8++++----
MNetSharp/NetSharpExamples/Benchmarks/Stream Network Connection Benchmarks/FixedPacketStreamNetworkWriterSyncBenchmark.cs | 8++++----
MNetSharp/NetSharpExamples/Benchmarks/Stream Network Connection Benchmarks/VariablePacketStreamNetworkReaderBenchmark.cs | 8++++----
MNetSharp/NetSharpExamples/Benchmarks/Stream Network Connection Benchmarks/VariablePacketStreamNetworkWriterAsyncBenchmark.cs | 8++++----
MNetSharp/NetSharpExamples/Benchmarks/Stream Network Connection Benchmarks/VariablePacketStreamNetworkWriterSyncBenchmark.cs | 8++++----
MNetSharp/NetSharpExamples/Examples/Datagram Network Connection Examples/DatagramNetworkReaderExample.cs | 6+++---
MNetSharp/NetSharpExamples/Examples/Datagram Network Connection Examples/DatagramNetworkWriterAsyncExample.cs | 6+++---
MNetSharp/NetSharpExamples/Examples/Datagram Network Connection Examples/DatagramNetworkWriterSyncExample.cs | 6+++---
MNetSharp/NetSharpExamples/Examples/Stream Network Connection Examples/FixedPacketStreamNetworkReaderExample.cs | 6+++---
MNetSharp/NetSharpExamples/Examples/Stream Network Connection Examples/FixedPacketStreamNetworkWriterAsyncExample.cs | 6+++---
MNetSharp/NetSharpExamples/Examples/Stream Network Connection Examples/FixedPacketStreamNetworkWriterSyncExample.cs | 6+++---
MNetSharp/NetSharpExamples/Examples/Stream Network Connection Examples/VariablePacketStreamNetworkReaderExample.cs | 6+++---
MNetSharp/NetSharpExamples/Examples/Stream Network Connection Examples/VariablePacketStreamNetworkWriterAsyncExample.cs | 6+++---
MNetSharp/NetSharpExamples/Examples/Stream Network Connection Examples/VariablePacketStreamNetworkWriterSyncExample.cs | 6+++---
MNetSharp/NetSharpExamples/NetSharpExamples.csproj | 4----
MNetSharp/NetSharpExamples/Program.cs | 6+++---
36 files changed, 226 insertions(+), 143 deletions(-)

diff --git a/NetSharp/NetSharp.sln b/NetSharp/NetSharp.sln @@ -7,6 +7,11 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NetSharp", "NetSharp\NetSha EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NetSharpExamples", "NetSharpExamples\NetSharpExamples.csproj", "{5861E518-E712-4031-9AA1-0313736FF957}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{DD66A23B-CB45-4AAA-818A-4081DA9C875B}" + ProjectSection(SolutionItems) = preProject + ..\..\..\..\_Visual Studio Config\.editorconfig = ..\..\..\..\_Visual Studio Config\.editorconfig + EndProjectSection +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU diff --git a/NetSharp/NetSharp/Raw/Datagram/RawDatagramNetworkReader.cs b/NetSharp/NetSharp/Raw/Datagram/RawDatagramNetworkReader.cs @@ -107,7 +107,10 @@ namespace NetSharp.Raw.Datagram return; } - if (Connection.ReceiveFromAsync(args)) return; + if (Connection.ReceiveFromAsync(args)) + { + return; + } StartDefaultReceiveFrom(); CompleteReceiveFrom(args); @@ -125,7 +128,10 @@ namespace NetSharp.Raw.Datagram return; } - if (Connection.SendToAsync(args)) return; + if (Connection.SendToAsync(args)) + { + return; + } CompleteSendTo(args); } diff --git a/NetSharp/NetSharp/Raw/Datagram/RawDatagramNetworkWriter.cs b/NetSharp/NetSharp/Raw/Datagram/RawDatagramNetworkWriter.cs @@ -26,7 +26,7 @@ namespace NetSharp.Raw.Datagram private void CompleteConnect(SocketAsyncEventArgs args) { - AsyncOperationToken token = (AsyncOperationToken)args.UserToken; + AsyncOperationToken token = (AsyncOperationToken) args.UserToken; switch (args.SocketError) { @@ -39,7 +39,7 @@ namespace NetSharp.Raw.Datagram break; default: - int errorCode = (int)args.SocketError; + int errorCode = (int) args.SocketError; token.CompletionSource.SetException(new SocketException(errorCode)); break; } @@ -49,7 +49,7 @@ namespace NetSharp.Raw.Datagram private void CompleteReceiveFrom(SocketAsyncEventArgs args) { - AsyncDatagramReadToken token = (AsyncDatagramReadToken)args.UserToken; + AsyncDatagramReadToken token = (AsyncDatagramReadToken) args.UserToken; byte[] receiveBuffer = args.Buffer; @@ -65,7 +65,7 @@ namespace NetSharp.Raw.Datagram break; default: - int errorCode = (int)args.SocketError; + int errorCode = (int) args.SocketError; token.CompletionSource.SetException(new SocketException(errorCode)); break; } @@ -76,7 +76,7 @@ namespace NetSharp.Raw.Datagram private void CompleteSendTo(SocketAsyncEventArgs args) { - AsyncDatagramWriteToken token = (AsyncDatagramWriteToken)args.UserToken; + AsyncDatagramWriteToken token = (AsyncDatagramWriteToken) args.UserToken; byte[] sendBuffer = args.Buffer; @@ -91,7 +91,7 @@ namespace NetSharp.Raw.Datagram break; default: - int errorCode = (int)args.SocketError; + int errorCode = (int) args.SocketError; token.CompletionSource.SetException(new SocketException(errorCode)); break; } @@ -162,7 +162,10 @@ namespace NetSharp.Raw.Datagram AsyncOperationToken token = new AsyncOperationToken(tcs); args.UserToken = token; - if (Connection.ConnectAsync(args)) return new ValueTask(tcs.Task); + if (Connection.ConnectAsync(args)) + { + return new ValueTask(tcs.Task); + } ArgsPool.Return(args); @@ -216,7 +219,10 @@ namespace NetSharp.Raw.Datagram AsyncDatagramReadToken token = new AsyncDatagramReadToken(tcs, in readBuffer); args.UserToken = token; - if (Connection.ReceiveFromAsync(args)) return new ValueTask<int>(tcs.Task); + if (Connection.ReceiveFromAsync(args)) + { + return new ValueTask<int>(tcs.Task); + } // inlining CompleteReceiveFrom(SocketAsyncEventArgs) for performance int result = args.BytesTransferred; @@ -278,7 +284,10 @@ namespace NetSharp.Raw.Datagram AsyncDatagramWriteToken token = new AsyncDatagramWriteToken(tcs); args.UserToken = token; - if (Connection.SendToAsync(args)) return new ValueTask<int>(tcs.Task); + if (Connection.SendToAsync(args)) + { + return new ValueTask<int>(tcs.Task); + } // inlining CompleteSendTo(SocketAsyncEventArgs) for performance int result = args.BytesTransferred; diff --git a/NetSharp/NetSharp/Raw/IRawNetworkTransportProvider.cs b/NetSharp/NetSharp/Raw/IRawNetworkTransportProvider.cs @@ -1,10 +1,10 @@ -using NetSharp.Raw.Datagram; -using NetSharp.Raw.Stream; - -using System; +using System; using System.Net; using System.Net.Sockets; +using NetSharp.Raw.Datagram; +using NetSharp.Raw.Stream; + namespace NetSharp.Raw { public interface IRawNetworkTransportProvider<in TReqHandler> where TReqHandler : Delegate diff --git a/NetSharp/NetSharp/Raw/RawNetworkConnectionBase.cs b/NetSharp/NetSharp/Raw/RawNetworkConnectionBase.cs @@ -1,10 +1,10 @@ -using NetSharp.Utils; - -using System; +using System; using System.Buffers; using System.Net; using System.Net.Sockets; +using NetSharp.Utils; + namespace NetSharp.Raw { public abstract class RawNetworkConnectionBase : IDisposable @@ -49,7 +49,10 @@ namespace NetSharp.Raw /// </summary> protected virtual void Dispose(bool disposing) { - if (!disposing) return; + if (!disposing) + { + return; + } ArgsPool.Dispose(); } diff --git a/NetSharp/NetSharp/Raw/RawNetworkReaderBase.cs b/NetSharp/NetSharp/Raw/RawNetworkReaderBase.cs @@ -1,5 +1,4 @@ -using System; -using System.Net; +using System.Net; using System.Net.Sockets; using System.Threading; @@ -22,7 +21,10 @@ namespace NetSharp.Raw /// <inheritdoc /> protected override void Dispose(bool disposing) { - if (!disposing) return; + if (!disposing) + { + return; + } shutdownTokenSource.Cancel(); shutdownTokenSource.Dispose(); diff --git a/NetSharp/NetSharp/Raw/Stream/FixedPacketRawStreamNetworkReader.cs b/NetSharp/NetSharp/Raw/Stream/FixedPacketRawStreamNetworkReader.cs @@ -47,7 +47,7 @@ namespace NetSharp.Raw.Stream /// <inheritdoc /> protected override void CompleteReceive(SocketAsyncEventArgs args) { - TransmissionToken token = (TransmissionToken)args.UserToken; + TransmissionToken token = (TransmissionToken) args.UserToken; byte[] receiveBuffer = args.Buffer; @@ -107,7 +107,7 @@ namespace NetSharp.Raw.Stream /// <inheritdoc /> protected override void CompleteSend(SocketAsyncEventArgs args) { - TransmissionToken token = (TransmissionToken)args.UserToken; + TransmissionToken token = (TransmissionToken) args.UserToken; byte[] sendBuffer = args.Buffer; int expectedBytes = token.ExpectedBytes; diff --git a/NetSharp/NetSharp/Raw/Stream/FixedPacketRawStreamNetworkWriter.cs b/NetSharp/NetSharp/Raw/Stream/FixedPacketRawStreamNetworkWriter.cs @@ -19,7 +19,7 @@ namespace NetSharp.Raw.Stream /// <inheritdoc /> protected override void CompleteReceive(SocketAsyncEventArgs args) { - AsyncStreamReadToken token = (AsyncStreamReadToken)args.UserToken; + AsyncStreamReadToken token = (AsyncStreamReadToken) args.UserToken; byte[] receiveBuffer = args.Buffer; int expectedBytes = receiveBuffer.Length; @@ -47,7 +47,7 @@ namespace NetSharp.Raw.Stream } else if (receivedBytes == 0) // connection is dead { - token.CompletionSource.SetException(new SocketException((int)SocketError.HostDown)); + token.CompletionSource.SetException(new SocketException((int) SocketError.HostDown)); } break; @@ -56,7 +56,7 @@ namespace NetSharp.Raw.Stream break; default: - int errorCode = (int)args.SocketError; + int errorCode = (int) args.SocketError; token.CompletionSource.SetException(new SocketException(errorCode)); break; } @@ -68,7 +68,7 @@ namespace NetSharp.Raw.Stream /// <inheritdoc /> protected override void CompleteSend(SocketAsyncEventArgs args) { - AsyncStreamWriteToken token = (AsyncStreamWriteToken)args.UserToken; + AsyncStreamWriteToken token = (AsyncStreamWriteToken) args.UserToken; byte[] sendBuffer = args.Buffer; int expectedBytes = sendBuffer.Length; @@ -95,7 +95,7 @@ namespace NetSharp.Raw.Stream } else if (sentBytes == 0) // connection is dead { - token.CompletionSource.SetException(new SocketException((int)SocketError.HostDown)); + token.CompletionSource.SetException(new SocketException((int) SocketError.HostDown)); } break; @@ -104,7 +104,7 @@ namespace NetSharp.Raw.Stream break; default: - int errorCode = (int)args.SocketError; + int errorCode = (int) args.SocketError; token.CompletionSource.SetException(new SocketException(errorCode)); break; } @@ -165,7 +165,10 @@ namespace NetSharp.Raw.Stream AsyncStreamReadToken token = new AsyncStreamReadToken(tcs, 0, in readBuffer); args.UserToken = token; - if (Connection.ReceiveAsync(args)) return new ValueTask<int>(tcs.Task); + if (Connection.ReceiveAsync(args)) + { + return new ValueTask<int>(tcs.Task); + } CompleteReceive(args); @@ -225,7 +228,10 @@ namespace NetSharp.Raw.Stream AsyncStreamWriteToken token = new AsyncStreamWriteToken(tcs, 0); args.UserToken = token; - if (Connection.SendAsync(args)) return new ValueTask<int>(tcs.Task); + if (Connection.SendAsync(args)) + { + return new ValueTask<int>(tcs.Task); + } CompleteSend(args); diff --git a/NetSharp/NetSharp/Raw/Stream/RawStreamNetworkReader.cs b/NetSharp/NetSharp/Raw/Stream/RawStreamNetworkReader.cs @@ -90,7 +90,10 @@ namespace NetSharp.Raw.Stream Socket clientSocket = args.AcceptSocket; - if (clientSocket.ReceiveAsync(args)) return; + if (clientSocket.ReceiveAsync(args)) + { + return; + } CompleteReceive(args); } @@ -106,7 +109,10 @@ namespace NetSharp.Raw.Stream Socket clientSocket = args.AcceptSocket; - if (clientSocket.SendAsync(args)) return; + if (clientSocket.SendAsync(args)) + { + return; + } CompleteSend(args); } @@ -140,7 +146,10 @@ namespace NetSharp.Raw.Stream return; } - if (Connection.AcceptAsync(args)) return; + if (Connection.AcceptAsync(args)) + { + return; + } StartDefaultAccept(); CompleteAccept(args); @@ -167,7 +176,10 @@ namespace NetSharp.Raw.Stream Socket clientSocket = args.AcceptSocket; - if (clientSocket.ReceiveAsync(args)) return; + if (clientSocket.ReceiveAsync(args)) + { + return; + } CompleteReceive(args); } @@ -182,7 +194,10 @@ namespace NetSharp.Raw.Stream Socket clientSocket = args.AcceptSocket; - if (clientSocket.SendAsync(args)) return; + if (clientSocket.SendAsync(args)) + { + return; + } CompleteSend(args); } diff --git a/NetSharp/NetSharp/Raw/Stream/RawStreamNetworkWriter.cs b/NetSharp/NetSharp/Raw/Stream/RawStreamNetworkWriter.cs @@ -21,7 +21,7 @@ namespace NetSharp.Raw.Stream private void CompleteConnect(SocketAsyncEventArgs args) { - AsyncOperationToken token = (AsyncOperationToken)args.UserToken; + AsyncOperationToken token = (AsyncOperationToken) args.UserToken; switch (args.SocketError) { @@ -34,7 +34,7 @@ namespace NetSharp.Raw.Stream break; default: - int errorCode = (int)args.SocketError; + int errorCode = (int) args.SocketError; token.CompletionSource.SetException(new SocketException(errorCode)); break; } @@ -44,7 +44,7 @@ namespace NetSharp.Raw.Stream private void CompleteDisconnect(SocketAsyncEventArgs args) { - AsyncOperationToken token = (AsyncOperationToken)args.UserToken; + AsyncOperationToken token = (AsyncOperationToken) args.UserToken; switch (args.SocketError) { @@ -57,7 +57,7 @@ namespace NetSharp.Raw.Stream break; default: - int errorCode = (int)args.SocketError; + int errorCode = (int) args.SocketError; token.CompletionSource.SetException(new SocketException(errorCode)); break; } @@ -100,7 +100,10 @@ namespace NetSharp.Raw.Stream [MethodImpl(MethodImplOptions.AggressiveInlining)] protected void ContinueReceive(SocketAsyncEventArgs args) { - if (Connection.ReceiveAsync(args)) return; + if (Connection.ReceiveAsync(args)) + { + return; + } CompleteReceive(args); } @@ -108,7 +111,10 @@ namespace NetSharp.Raw.Stream [MethodImpl(MethodImplOptions.AggressiveInlining)] protected void ContinueSend(SocketAsyncEventArgs args) { - if (Connection.SendAsync(args)) return; + if (Connection.SendAsync(args)) + { + return; + } CompleteSend(args); } @@ -151,7 +157,10 @@ namespace NetSharp.Raw.Stream AsyncOperationToken token = new AsyncOperationToken(tcs); args.UserToken = token; - if (Connection.ConnectAsync(args)) return new ValueTask(tcs.Task); + if (Connection.ConnectAsync(args)) + { + return new ValueTask(tcs.Task); + } ArgsPool.Return(args); @@ -173,7 +182,10 @@ namespace NetSharp.Raw.Stream AsyncOperationToken token = new AsyncOperationToken(tcs); args.UserToken = token; - if (Connection.DisconnectAsync(args)) return new ValueTask(tcs.Task); + if (Connection.DisconnectAsync(args)) + { + return new ValueTask(tcs.Task); + } ArgsPool.Return(args); diff --git a/NetSharp/NetSharp/Raw/Stream/RawStreamPacket.cs b/NetSharp/NetSharp/Raw/Stream/RawStreamPacket.cs @@ -1,4 +1,5 @@ using System; + using NetSharp.Utils.Conversion; namespace NetSharp.Raw.Stream diff --git a/NetSharp/NetSharp/Raw/Stream/VariablePacketRawStreamNetworkReader.cs b/NetSharp/NetSharp/Raw/Stream/VariablePacketRawStreamNetworkReader.cs @@ -56,7 +56,7 @@ namespace NetSharp.Raw.Stream /// <inheritdoc /> protected override void CompleteReceive(SocketAsyncEventArgs args) { - TransmissionToken token = (TransmissionToken)args.UserToken; + TransmissionToken token = (TransmissionToken) args.UserToken; byte[] receiveBuffer = args.Buffer; Memory<byte> receiveBufferMemory = new Memory<byte>(receiveBuffer); @@ -140,7 +140,7 @@ namespace NetSharp.Raw.Stream /// <inheritdoc /> protected override void CompleteSend(SocketAsyncEventArgs args) { - TransmissionToken token = (TransmissionToken)args.UserToken; + TransmissionToken token = (TransmissionToken) args.UserToken; byte[] sendBuffer = args.Buffer; int expectedBytes = token.ExpectedBytes; diff --git a/NetSharp/NetSharp/Raw/Stream/VariablePacketRawStreamNetworkWriter.cs b/NetSharp/NetSharp/Raw/Stream/VariablePacketRawStreamNetworkWriter.cs @@ -1,7 +1,6 @@ using System; using System.Net; using System.Net.Sockets; -using System.Runtime.CompilerServices; using System.Threading.Tasks; namespace NetSharp.Raw.Stream @@ -17,6 +16,7 @@ namespace NetSharp.Raw.Stream { } + /* [MethodImpl(MethodImplOptions.AggressiveInlining)] private void ConfigureReceiveData(SocketAsyncEventArgs args, in RawStreamPacket.Header header) { @@ -56,15 +56,20 @@ namespace NetSharp.Raw.Stream AsyncStreamWriteToken token = new AsyncStreamWriteToken(RawStreamPacket.Header.TotalHeaderSize, 0); args.UserToken = token; } + */ /// <inheritdoc /> protected override void CompleteReceive(SocketAsyncEventArgs args) { - AsyncStreamReadToken token = (AsyncStreamReadToken)args.UserToken; + AsyncStreamReadToken token = (AsyncStreamReadToken) args.UserToken; byte[] receiveBuffer = args.Buffer; + Memory<byte> receiveBufferMemory = new Memory<byte>(receiveBuffer); + int expectedBytes = receiveBuffer.Length; + bool readHeader = expectedBytes == RawStreamPacket.Header.TotalHeaderSize; + switch (args.SocketError) { case SocketError.Success: @@ -72,8 +77,20 @@ namespace NetSharp.Raw.Stream if (totalReceivedBytes + receivedBytes == expectedBytes) // transmission complete { - receiveBuffer.CopyTo(token.UserBuffer); - token.CompletionSource.SetResult(totalReceivedBytes + receivedBytes); + if (readHeader) + { + Memory<byte> headerBuffer = receiveBufferMemory.Slice(0, RawStreamPacket.Header.TotalHeaderSize); + RawStreamPacket.Header header = RawStreamPacket.Header.Deserialise(in headerBuffer); + + //ConfigureReceiveData(args, in header); + + //StartReceive(args); + } + else + { + receiveBuffer.CopyTo(token.UserBuffer); + token.CompletionSource.SetResult(totalReceivedBytes + receivedBytes); + } } else if (0 < totalReceivedBytes + receivedBytes && totalReceivedBytes + receivedBytes < expectedBytes) // transmission not complete { @@ -88,7 +105,7 @@ namespace NetSharp.Raw.Stream } else if (receivedBytes == 0) // connection is dead { - token.CompletionSource.SetException(new SocketException((int)SocketError.HostDown)); + token.CompletionSource.SetException(new SocketException((int) SocketError.HostDown)); } break; @@ -97,7 +114,7 @@ namespace NetSharp.Raw.Stream break; default: - int errorCode = (int)args.SocketError; + int errorCode = (int) args.SocketError; token.CompletionSource.SetException(new SocketException(errorCode)); break; } @@ -109,7 +126,7 @@ namespace NetSharp.Raw.Stream /// <inheritdoc /> protected override void CompleteSend(SocketAsyncEventArgs args) { - AsyncStreamWriteToken token = (AsyncStreamWriteToken)args.UserToken; + AsyncStreamWriteToken token = (AsyncStreamWriteToken) args.UserToken; byte[] sendBuffer = args.Buffer; int expectedBytes = sendBuffer.Length; @@ -136,7 +153,7 @@ namespace NetSharp.Raw.Stream } else if (sentBytes == 0) // connection is dead { - token.CompletionSource.SetException(new SocketException((int)SocketError.HostDown)); + token.CompletionSource.SetException(new SocketException((int) SocketError.HostDown)); } break; @@ -145,7 +162,7 @@ namespace NetSharp.Raw.Stream break; default: - int errorCode = (int)args.SocketError; + int errorCode = (int) args.SocketError; token.CompletionSource.SetException(new SocketException(errorCode)); break; } @@ -171,7 +188,9 @@ namespace NetSharp.Raw.Stream BufferPool.Return(transmissionHeaderBuffer, true); if (totalBytes > readBuffer.Length) + { throw new ArgumentException("Read buffer is too small to fully contain message.", nameof(readBuffer)); + } int readBytes = 0; byte[] transmissionBuffer = BufferPool.Rent(totalBytes); @@ -209,10 +228,13 @@ namespace NetSharp.Raw.Stream args.RemoteEndPoint = remoteEndPoint; args.SocketFlags = flags; - AsyncStreamReadToken token = new AsyncStreamReadToken(tcs, 0, in readBuffer); + AsyncStreamReadToken token = new AsyncStreamReadToken(tcs, MESSAGE_SIZE, 0, in readBuffer); args.UserToken = token; - if (Connection.ReceiveAsync(args)) return new ValueTask<int>(tcs.Task); + if (Connection.ReceiveAsync(args)) + { + return new ValueTask<int>(tcs.Task); + } CompleteReceive(args); @@ -271,10 +293,13 @@ namespace NetSharp.Raw.Stream args.RemoteEndPoint = remoteEndPoint; args.SocketFlags = flags; - AsyncStreamWriteToken token = new AsyncStreamWriteToken(tcs, 0); + AsyncStreamWriteToken token = new AsyncStreamWriteToken(tcs, MESSAGE_SIZE, 0); args.UserToken = token; - if (Connection.SendAsync(args)) return new ValueTask<int>(tcs.Task); + if (Connection.SendAsync(args)) + { + return new ValueTask<int>(tcs.Task); + } CompleteSend(args); diff --git a/NetSharp/NetSharp/Utils/BiDictionary.cs b/NetSharp/NetSharp/Utils/BiDictionary.cs @@ -51,7 +51,7 @@ namespace NetSharp.Utils return key; } - set { valueToKeyMap.AddOrUpdate(index, value, (v, k) => value); } + set => valueToKeyMap.AddOrUpdate(index, value, (v, k) => value); } /// <summary> @@ -72,7 +72,7 @@ namespace NetSharp.Utils return value; } - set { keyToValueMap.AddOrUpdate(index, value, (k, v) => value); } + set => keyToValueMap.AddOrUpdate(index, value, (k, v) => value); } /// <summary> @@ -93,7 +93,10 @@ namespace NetSharp.Utils /// <returns> /// Whether the given key was found. /// </returns> - public bool ContainsKey(in K key) => keyToValueMap.ContainsKey(key); + public bool ContainsKey(in K key) + { + return keyToValueMap.ContainsKey(key); + } /// <summary> /// Whether this instance contains the given value. @@ -104,7 +107,10 @@ namespace NetSharp.Utils /// <returns> /// Whether the given value was found. /// </returns> - public bool ContainsValue(in V value) => valueToKeyMap.ContainsKey(value); + public bool ContainsValue(in V value) + { + return valueToKeyMap.ContainsKey(value); + } /// <summary> /// Attempts to set the key associated with the given value. diff --git a/NetSharp/NetSharp/Utils/TransmissionResult.cs b/NetSharp/NetSharp/Utils/TransmissionResult.cs @@ -69,6 +69,9 @@ namespace NetSharp.Utils /// Whether this instance has timed out. /// </returns> [MethodImpl(MethodImplOptions.AggressiveInlining)] - public bool TimedOut() => Equals(Timeout); + public bool TimedOut() + { + return Equals(Timeout); + } } } \ No newline at end of file diff --git a/NetSharp/NetSharpExamples/BenchmarkHelper.cs b/NetSharp/NetSharpExamples/BenchmarkHelper.cs @@ -10,15 +10,9 @@ namespace NetSharpExamples private long minRttMs = int.MaxValue, maxRttMs = int.MinValue; private long minRttTicks = int.MaxValue, maxRttTicks = int.MinValue; - public long RttMs - { - get { return stopwatch.ElapsedMilliseconds; } - } + public long RttMs => stopwatch.ElapsedMilliseconds; - public long RttTicks - { - get { return stopwatch.ElapsedTicks; } - } + public long RttTicks => stopwatch.ElapsedTicks; public double CalcBandwidth(long sentPacketCount, long packetSize) { diff --git a/NetSharp/NetSharpExamples/Benchmarks/Datagram Network Connection Benchmarks/DatagramNetworkReaderBenchmark.cs b/NetSharp/NetSharpExamples/Benchmarks/Datagram Network Connection Benchmarks/DatagramNetworkReaderBenchmark.cs @@ -1,6 +1,4 @@ -using NetSharp.Raw.Datagram; - -using System; +using System; using System.Linq; using System.Net; using System.Net.Sockets; @@ -8,6 +6,8 @@ using System.Text; using System.Threading; using System.Threading.Tasks; +using NetSharp.Raw.Datagram; + namespace NetSharpExamples.Benchmarks.Datagram_Network_Connection_Benchmarks { public class DatagramNetworkReaderBenchmark : INetSharpBenchmark @@ -37,7 +37,7 @@ namespace NetSharpExamples.Benchmarks.Datagram_Network_Connection_Benchmarks { try { - int id = (int)idObj; + int id = (int) idObj; BenchmarkHelper benchmarkHelper = new BenchmarkHelper(); diff --git a/NetSharp/NetSharpExamples/Benchmarks/Datagram Network Connection Benchmarks/DatagramNetworkWriterAsyncBenchmark.cs b/NetSharp/NetSharpExamples/Benchmarks/Datagram Network Connection Benchmarks/DatagramNetworkWriterAsyncBenchmark.cs @@ -1,12 +1,12 @@ -using NetSharp.Raw.Datagram; - -using System; +using System; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading; using System.Threading.Tasks; +using NetSharp.Raw.Datagram; + namespace NetSharpExamples.Benchmarks.Datagram_Network_Connection_Benchmarks { public class DatagramNetworkWriterAsyncBenchmark : INetSharpBenchmark @@ -62,7 +62,7 @@ namespace NetSharpExamples.Benchmarks.Datagram_Network_Connection_Benchmarks using RawDatagramNetworkWriter writer = new RawDatagramNetworkWriter(ref rawSocket, defaultRemoteEndPoint, PacketSize); using CancellationTokenSource serverCts = new CancellationTokenSource(); - Task serverTask = Task.Factory.StartNew(state => ServerTask((CancellationToken)state), serverCts.Token, TaskCreationOptions.LongRunning); + Task serverTask = Task.Factory.StartNew(state => ServerTask((CancellationToken) state), serverCts.Token, TaskCreationOptions.LongRunning); ServerReadyEvent.Wait(); diff --git a/NetSharp/NetSharpExamples/Benchmarks/Datagram Network Connection Benchmarks/DatagramNetworkWriterSyncBenchmark.cs b/NetSharp/NetSharpExamples/Benchmarks/Datagram Network Connection Benchmarks/DatagramNetworkWriterSyncBenchmark.cs @@ -1,12 +1,12 @@ -using NetSharp.Raw.Datagram; - -using System; +using System; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading; using System.Threading.Tasks; +using NetSharp.Raw.Datagram; + namespace NetSharpExamples.Benchmarks.Datagram_Network_Connection_Benchmarks { public class DatagramNetworkWriterSyncBenchmark : INetSharpBenchmark @@ -62,7 +62,7 @@ namespace NetSharpExamples.Benchmarks.Datagram_Network_Connection_Benchmarks using RawDatagramNetworkWriter writer = new RawDatagramNetworkWriter(ref rawSocket, defaultRemoteEndPoint, PacketSize); using CancellationTokenSource serverCts = new CancellationTokenSource(); - Task serverTask = Task.Factory.StartNew(state => ServerTask((CancellationToken)state), serverCts.Token, TaskCreationOptions.LongRunning); + Task serverTask = Task.Factory.StartNew(state => ServerTask((CancellationToken) state), serverCts.Token, TaskCreationOptions.LongRunning); ServerReadyEvent.Wait(); diff --git a/NetSharp/NetSharpExamples/Benchmarks/Stream Network Connection Benchmarks/FixedPacketStreamNetworkReaderBenchmark.cs b/NetSharp/NetSharpExamples/Benchmarks/Stream Network Connection Benchmarks/FixedPacketStreamNetworkReaderBenchmark.cs @@ -1,6 +1,4 @@ -using NetSharp.Raw.Stream; - -using System; +using System; using System.Linq; using System.Net; using System.Net.Sockets; @@ -8,6 +6,8 @@ using System.Text; using System.Threading; using System.Threading.Tasks; +using NetSharp.Raw.Stream; + namespace NetSharpExamples.Benchmarks.Stream_Network_Connection_Benchmarks { public class FixedPacketStreamNetworkReaderBenchmark : INetSharpBenchmark @@ -35,7 +35,7 @@ namespace NetSharpExamples.Benchmarks.Stream_Network_Connection_Benchmarks private Task BenchmarkClientTask(object idObj) { - int id = (int)idObj; + int id = (int) idObj; BenchmarkHelper benchmarkHelper = new BenchmarkHelper(); diff --git a/NetSharp/NetSharpExamples/Benchmarks/Stream Network Connection Benchmarks/FixedPacketStreamNetworkWriterAsyncBenchmark.cs b/NetSharp/NetSharpExamples/Benchmarks/Stream Network Connection Benchmarks/FixedPacketStreamNetworkWriterAsyncBenchmark.cs @@ -1,12 +1,12 @@ -using NetSharp.Raw.Stream; - -using System; +using System; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading; using System.Threading.Tasks; +using NetSharp.Raw.Stream; + namespace NetSharpExamples.Benchmarks.Stream_Network_Connection_Benchmarks { public class FixedPacketStreamNetworkWriterAsyncBenchmark : INetSharpBenchmark @@ -84,7 +84,7 @@ namespace NetSharpExamples.Benchmarks.Stream_Network_Connection_Benchmarks using RawStreamNetworkWriter writer = new FixedPacketRawStreamNetworkWriter(ref rawSocket, defaultRemoteEndPoint, PacketSize); using CancellationTokenSource serverCts = new CancellationTokenSource(); - Task serverTask = Task.Factory.StartNew(state => ServerTask((CancellationToken)state), serverCts.Token, TaskCreationOptions.LongRunning); + Task serverTask = Task.Factory.StartNew(state => ServerTask((CancellationToken) state), serverCts.Token, TaskCreationOptions.LongRunning); ServerReadyEvent.Wait(); rawSocket.Connect(ServerEndPoint); diff --git a/NetSharp/NetSharpExamples/Benchmarks/Stream Network Connection Benchmarks/FixedPacketStreamNetworkWriterSyncBenchmark.cs b/NetSharp/NetSharpExamples/Benchmarks/Stream Network Connection Benchmarks/FixedPacketStreamNetworkWriterSyncBenchmark.cs @@ -1,12 +1,12 @@ -using NetSharp.Raw.Stream; - -using System; +using System; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading; using System.Threading.Tasks; +using NetSharp.Raw.Stream; + namespace NetSharpExamples.Benchmarks.Stream_Network_Connection_Benchmarks { public class FixedPacketStreamNetworkWriterSyncBenchmark : INetSharpBenchmark @@ -84,7 +84,7 @@ namespace NetSharpExamples.Benchmarks.Stream_Network_Connection_Benchmarks using RawStreamNetworkWriter writer = new FixedPacketRawStreamNetworkWriter(ref rawSocket, defaultRemoteEndPoint, PacketSize); using CancellationTokenSource serverCts = new CancellationTokenSource(); - Task serverTask = Task.Factory.StartNew(state => ServerTask((CancellationToken)state), serverCts.Token, TaskCreationOptions.LongRunning); + Task serverTask = Task.Factory.StartNew(state => ServerTask((CancellationToken) state), serverCts.Token, TaskCreationOptions.LongRunning); ServerReadyEvent.Wait(); rawSocket.Connect(ServerEndPoint); diff --git a/NetSharp/NetSharpExamples/Benchmarks/Stream Network Connection Benchmarks/VariablePacketStreamNetworkReaderBenchmark.cs b/NetSharp/NetSharpExamples/Benchmarks/Stream Network Connection Benchmarks/VariablePacketStreamNetworkReaderBenchmark.cs @@ -1,6 +1,4 @@ -using NetSharp.Raw.Stream; - -using System; +using System; using System.Linq; using System.Net; using System.Net.Sockets; @@ -8,6 +6,8 @@ using System.Text; using System.Threading; using System.Threading.Tasks; +using NetSharp.Raw.Stream; + namespace NetSharpExamples.Benchmarks.Stream_Network_Connection_Benchmarks { public class VariablePacketStreamNetworkReaderBenchmark : INetSharpBenchmark @@ -35,7 +35,7 @@ namespace NetSharpExamples.Benchmarks.Stream_Network_Connection_Benchmarks private Task BenchmarkClientTask(object idObj) { - int id = (int)idObj; + int id = (int) idObj; BenchmarkHelper benchmarkHelper = new BenchmarkHelper(); diff --git a/NetSharp/NetSharpExamples/Benchmarks/Stream Network Connection Benchmarks/VariablePacketStreamNetworkWriterAsyncBenchmark.cs b/NetSharp/NetSharpExamples/Benchmarks/Stream Network Connection Benchmarks/VariablePacketStreamNetworkWriterAsyncBenchmark.cs @@ -1,12 +1,12 @@ -using NetSharp.Raw.Stream; - -using System; +using System; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading; using System.Threading.Tasks; +using NetSharp.Raw.Stream; + namespace NetSharpExamples.Benchmarks.Stream_Network_Connection_Benchmarks { public class VariablePacketStreamNetworkWriterAsyncBenchmark : INetSharpBenchmark @@ -84,7 +84,7 @@ namespace NetSharpExamples.Benchmarks.Stream_Network_Connection_Benchmarks using RawStreamNetworkWriter writer = new VariablePacketRawStreamNetworkWriter(ref rawSocket, defaultRemoteEndPoint, PacketSize); using CancellationTokenSource serverCts = new CancellationTokenSource(); - Task serverTask = Task.Factory.StartNew(state => ServerTask((CancellationToken)state), serverCts.Token, TaskCreationOptions.LongRunning); + Task serverTask = Task.Factory.StartNew(state => ServerTask((CancellationToken) state), serverCts.Token, TaskCreationOptions.LongRunning); ServerReadyEvent.Wait(); rawSocket.Connect(ServerEndPoint); diff --git a/NetSharp/NetSharpExamples/Benchmarks/Stream Network Connection Benchmarks/VariablePacketStreamNetworkWriterSyncBenchmark.cs b/NetSharp/NetSharpExamples/Benchmarks/Stream Network Connection Benchmarks/VariablePacketStreamNetworkWriterSyncBenchmark.cs @@ -1,12 +1,12 @@ -using NetSharp.Raw.Stream; - -using System; +using System; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading; using System.Threading.Tasks; +using NetSharp.Raw.Stream; + namespace NetSharpExamples.Benchmarks.Stream_Network_Connection_Benchmarks { public class VariablePacketStreamNetworkWriterSyncBenchmark : INetSharpBenchmark @@ -84,7 +84,7 @@ namespace NetSharpExamples.Benchmarks.Stream_Network_Connection_Benchmarks using RawStreamNetworkWriter writer = new VariablePacketRawStreamNetworkWriter(ref rawSocket, defaultRemoteEndPoint, PacketSize); using CancellationTokenSource serverCts = new CancellationTokenSource(); - Task serverTask = Task.Factory.StartNew(state => ServerTask((CancellationToken)state), serverCts.Token, TaskCreationOptions.LongRunning); + Task serverTask = Task.Factory.StartNew(state => ServerTask((CancellationToken) state), serverCts.Token, TaskCreationOptions.LongRunning); ServerReadyEvent.Wait(); rawSocket.Connect(ServerEndPoint); diff --git a/NetSharp/NetSharpExamples/Examples/Datagram Network Connection Examples/DatagramNetworkReaderExample.cs b/NetSharp/NetSharpExamples/Examples/Datagram Network Connection Examples/DatagramNetworkReaderExample.cs @@ -1,11 +1,11 @@ -using NetSharp.Raw.Datagram; - -using System; +using System; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading.Tasks; +using NetSharp.Raw.Datagram; + namespace NetSharpExamples.Examples.Datagram_Network_Connection_Examples { public class DatagramNetworkReaderExample : INetSharpExample diff --git a/NetSharp/NetSharpExamples/Examples/Datagram Network Connection Examples/DatagramNetworkWriterAsyncExample.cs b/NetSharp/NetSharpExamples/Examples/Datagram Network Connection Examples/DatagramNetworkWriterAsyncExample.cs @@ -1,11 +1,11 @@ -using NetSharp.Raw.Datagram; - -using System; +using System; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading.Tasks; +using NetSharp.Raw.Datagram; + namespace NetSharpExamples.Examples.Datagram_Network_Connection_Examples { public class DatagramNetworkWriterAsyncExample : INetSharpExample diff --git a/NetSharp/NetSharpExamples/Examples/Datagram Network Connection Examples/DatagramNetworkWriterSyncExample.cs b/NetSharp/NetSharpExamples/Examples/Datagram Network Connection Examples/DatagramNetworkWriterSyncExample.cs @@ -1,11 +1,11 @@ -using NetSharp.Raw.Datagram; - -using System; +using System; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading.Tasks; +using NetSharp.Raw.Datagram; + namespace NetSharpExamples.Examples.Datagram_Network_Connection_Examples { public class DatagramNetworkWriterSyncExample : INetSharpExample diff --git a/NetSharp/NetSharpExamples/Examples/Stream Network Connection Examples/FixedPacketStreamNetworkReaderExample.cs b/NetSharp/NetSharpExamples/Examples/Stream Network Connection Examples/FixedPacketStreamNetworkReaderExample.cs @@ -1,11 +1,11 @@ -using NetSharp.Raw.Stream; - -using System; +using System; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading.Tasks; +using NetSharp.Raw.Stream; + namespace NetSharpExamples.Examples.Stream_Network_Connection_Examples { public class FixedPacketStreamNetworkReaderExample : INetSharpExample diff --git a/NetSharp/NetSharpExamples/Examples/Stream Network Connection Examples/FixedPacketStreamNetworkWriterAsyncExample.cs b/NetSharp/NetSharpExamples/Examples/Stream Network Connection Examples/FixedPacketStreamNetworkWriterAsyncExample.cs @@ -1,11 +1,11 @@ -using NetSharp.Raw.Stream; - -using System; +using System; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading.Tasks; +using NetSharp.Raw.Stream; + namespace NetSharpExamples.Examples.Stream_Network_Connection_Examples { public class FixedPacketStreamNetworkWriterAsyncExample : INetSharpExample diff --git a/NetSharp/NetSharpExamples/Examples/Stream Network Connection Examples/FixedPacketStreamNetworkWriterSyncExample.cs b/NetSharp/NetSharpExamples/Examples/Stream Network Connection Examples/FixedPacketStreamNetworkWriterSyncExample.cs @@ -1,11 +1,11 @@ -using NetSharp.Raw.Stream; - -using System; +using System; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading.Tasks; +using NetSharp.Raw.Stream; + namespace NetSharpExamples.Examples.Stream_Network_Connection_Examples { public class FixedPacketStreamNetworkWriterSyncExample : INetSharpExample diff --git a/NetSharp/NetSharpExamples/Examples/Stream Network Connection Examples/VariablePacketStreamNetworkReaderExample.cs b/NetSharp/NetSharpExamples/Examples/Stream Network Connection Examples/VariablePacketStreamNetworkReaderExample.cs @@ -1,11 +1,11 @@ -using NetSharp.Raw.Stream; - -using System; +using System; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading.Tasks; +using NetSharp.Raw.Stream; + namespace NetSharpExamples.Examples.Stream_Network_Connection_Examples { public class VariablePacketStreamNetworkReaderExample : INetSharpExample diff --git a/NetSharp/NetSharpExamples/Examples/Stream Network Connection Examples/VariablePacketStreamNetworkWriterAsyncExample.cs b/NetSharp/NetSharpExamples/Examples/Stream Network Connection Examples/VariablePacketStreamNetworkWriterAsyncExample.cs @@ -1,11 +1,11 @@ -using NetSharp.Raw.Stream; - -using System; +using System; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading.Tasks; +using NetSharp.Raw.Stream; + namespace NetSharpExamples.Examples.Stream_Network_Connection_Examples { public class VariablePacketStreamNetworkWriterAsyncExample : INetSharpExample diff --git a/NetSharp/NetSharpExamples/Examples/Stream Network Connection Examples/VariablePacketStreamNetworkWriterSyncExample.cs b/NetSharp/NetSharpExamples/Examples/Stream Network Connection Examples/VariablePacketStreamNetworkWriterSyncExample.cs @@ -1,11 +1,11 @@ -using NetSharp.Raw.Stream; - -using System; +using System; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading.Tasks; +using NetSharp.Raw.Stream; + namespace NetSharpExamples.Examples.Stream_Network_Connection_Examples { public class VariablePacketStreamNetworkWriterSyncExample : INetSharpExample diff --git a/NetSharp/NetSharpExamples/NetSharpExamples.csproj b/NetSharp/NetSharpExamples/NetSharpExamples.csproj @@ -16,8 +16,4 @@ <ItemGroup> <ProjectReference Include="..\NetSharp\NetSharp.csproj" /> </ItemGroup> - - <ItemGroup> - <Folder Include="Examples\Connection Examples\" /> - </ItemGroup> </Project> \ No newline at end of file diff --git a/NetSharp/NetSharpExamples/Program.cs b/NetSharp/NetSharpExamples/Program.cs @@ -29,12 +29,12 @@ namespace NetSharpExamples switch (interfaces.Length) { case 1 when type.GetInterface(nameof(INetSharpExample)) == typeof(INetSharpExample): - Examples.Add((INetSharpExample)instance); + Examples.Add((INetSharpExample) instance); break; case 2 when type.GetInterface(nameof(INetSharpBenchmark)) == typeof(INetSharpBenchmark): - Examples.Add((INetSharpExample)instance); - Benchmarks.Add((INetSharpBenchmark)instance); + Examples.Add((INetSharpExample) instance); + Benchmarks.Add((INetSharpBenchmark) instance); break; } }