Skip to content

Commit 0862ad8

Browse files
committed
cleaning exceptions
1 parent 9dd5a8c commit 0862ad8

File tree

14 files changed

+23
-60
lines changed

14 files changed

+23
-60
lines changed

src/Backdash/Backends/LocalBackend.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,6 @@ public LocalBackend(NetcodeOptions options, BackendServices<TInput> services)
2727
{
2828
ArgumentNullException.ThrowIfNull(services);
2929
ArgumentNullException.ThrowIfNull(options);
30-
ThrowHelpers.ThrowIfTypeTooBigForStack<TInput>();
31-
ThrowHelpers.ThrowIfTypeTooBigForStack<GameInput<TInput>>();
3230

3331
this.options = options;
3432
Random = services.DeterministicRandom;
@@ -180,7 +178,7 @@ public void AdvanceFrame()
180178
public void SetFrameDelay(PlayerHandle player, int delayInFrames)
181179
{
182180
ThrowHelpers.ThrowIfArgumentOutOfBounds(player.InternalQueue, 0, addedPlayers.Count);
183-
ThrowHelpers.ThrowIfArgumentIsNegative(delayInFrames);
181+
ArgumentOutOfRangeException.ThrowIfNegative(delayInFrames);
184182
synchronizer.SetFrameDelay(player, delayInFrames);
185183
}
186184

src/Backdash/Backends/RemoteBackend.cs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,9 @@ BackendServices<TInput> services
5757
{
5858
ArgumentNullException.ThrowIfNull(services);
5959
ArgumentNullException.ThrowIfNull(options);
60-
ThrowHelpers.ThrowIfArgumentIsZeroOrLess(port);
61-
ThrowHelpers.ThrowIfArgumentIsZeroOrLess(options.FramesPerSecond);
60+
ArgumentOutOfRangeException.ThrowIfNegativeOrZero(port);
61+
ArgumentOutOfRangeException.ThrowIfNegativeOrZero(options.FramesPerSecond);
6262
ThrowHelpers.ThrowIfArgumentOutOfBounds(options.SpectatorOffset, min: Max.NumberOfPlayers);
63-
ThrowHelpers.ThrowIfTypeTooBigForStack<GameInput<TInput>>();
6463

6564
this.options = options;
6665
inputSerializer = services.InputSerializer;
@@ -163,7 +162,7 @@ public ResultCode AddPlayer(Player player)
163162
Spectator spectator => AddSpectator(spectator),
164163
RemotePlayer remote => AddRemotePlayer(remote),
165164
LocalPlayer local => AddLocalPlayer(local),
166-
_ => throw new ArgumentOutOfRangeException(nameof(player))
165+
_ => throw new ArgumentOutOfRangeException(nameof(player)),
167166
};
168167
}
169168

@@ -255,7 +254,7 @@ public void SetHandler(INetcodeSessionHandler handler)
255254
public void SetFrameDelay(PlayerHandle player, int delayInFrames)
256255
{
257256
ThrowHelpers.ThrowIfArgumentOutOfBounds(player.InternalQueue, 0, addedPlayers.Count);
258-
ThrowHelpers.ThrowIfArgumentIsNegative(delayInFrames);
257+
ArgumentOutOfRangeException.ThrowIfNegative(delayInFrames);
259258
synchronizer.SetFrameDelay(player, delayInFrames);
260259
}
261260

src/Backdash/Backends/SpectatorBackend.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,8 @@ public SpectatorBackend(int port,
4949
ArgumentNullException.ThrowIfNull(services);
5050
ArgumentNullException.ThrowIfNull(options);
5151
ArgumentNullException.ThrowIfNull(hostEndpoint);
52-
ThrowHelpers.ThrowIfArgumentIsZeroOrLess(port);
52+
ArgumentOutOfRangeException.ThrowIfNegativeOrZero(port);
53+
5354
this.hostEndpoint = hostEndpoint;
5455
this.options = options;
5556
backgroundJobManager = services.JobManager;

src/Backdash/Backends/SyncTestBackend.cs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,7 @@ public SyncTestBackend(NetcodeOptions options,
5050
{
5151
ArgumentNullException.ThrowIfNull(services);
5252
ArgumentNullException.ThrowIfNull(options);
53-
ThrowHelpers.ThrowIfTypeTooBigForStack<TInput>();
54-
ThrowHelpers.ThrowIfTypeTooBigForStack<GameInput<TInput>>();
55-
ThrowHelpers.ThrowIfArgumentIsNegative(checkDistance.FrameCount);
53+
ArgumentOutOfRangeException.ThrowIfNegative(checkDistance.FrameCount);
5654
this.options = options;
5755
this.checkDistance = checkDistance;
5856
this.throwError = throwError;
@@ -302,7 +300,7 @@ void LogText(LogLevel level, string text)
302300
public void SetFrameDelay(PlayerHandle player, int delayInFrames)
303301
{
304302
ThrowHelpers.ThrowIfArgumentOutOfBounds(player.InternalQueue, 0, addedPlayers.Count);
305-
ThrowHelpers.ThrowIfArgumentIsNegative(delayInFrames);
303+
ArgumentOutOfRangeException.ThrowIfNegative(delayInFrames);
306304
synchronizer.SetFrameDelay(player, delayInFrames);
307305
}
308306

src/Backdash/Core/Mem.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@ namespace Backdash.Core;
88

99
static class Mem
1010
{
11-
public const int MaxStackLimit = 1024;
12-
1311
[MethodImpl(MethodImplOptions.AggressiveInlining)]
1412
public static void Clear(in Span<byte> bytes) => bytes.Clear();
1513

src/Backdash/Core/ThrowHelpers.cs

Lines changed: 3 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ namespace Backdash.Core;
55

66
static class ThrowHelpers
77
{
8-
public static void ThrowIfArgumentOutOfBounds(int argument,
8+
public static void ThrowIfArgumentOutOfBounds(
9+
int argument,
910
int min = int.MinValue,
1011
int max = int.MaxValue,
1112
[CallerArgumentExpression(nameof(argument))]
@@ -15,37 +16,10 @@ public static void ThrowIfArgumentOutOfBounds(int argument,
1516
throw new ArgumentOutOfRangeException(argument.ToString(CultureInfo.InvariantCulture), paramName);
1617
}
1718

18-
public static void ThrowIfArgumentIsZeroOrLess(int argument,
19-
[CallerArgumentExpression(nameof(argument))]
20-
string? paramName = null)
21-
{
22-
if (argument <= 0)
23-
throw new ArgumentOutOfRangeException(argument.ToString(CultureInfo.InvariantCulture), paramName);
24-
}
25-
26-
public static void ThrowIfArgumentIsNegative(int argument,
27-
[CallerArgumentExpression(nameof(argument))]
28-
string? paramName = null)
29-
{
30-
if (argument < 0)
31-
throw new ArgumentOutOfRangeException(argument.ToString(CultureInfo.InvariantCulture), paramName);
32-
}
33-
34-
public static void ThrowIfTypeTooBigForStack<T>() where T : unmanaged
35-
{
36-
var size = Mem.SizeOf<T>();
37-
if (size > Mem.MaxStackLimit)
38-
throw new NetcodeException($"{typeof(T).Name} size too big for stack: {size}");
39-
}
40-
41-
public static Exception StructMustNotHaveReferenceTypeMembers() =>
42-
new ArgumentException("Input struct must not have reference type members");
43-
44-
4519
[MethodImpl(MethodImplOptions.AggressiveInlining)]
4620
public static void ThrowIfTypeIsReferenceOrContainsReferences<T>() where T : struct
4721
{
4822
if (Mem.IsReferenceOrContainsReferences<T>())
49-
throw StructMustNotHaveReferenceTypeMembers();
23+
throw new ArgumentException($"Type {typeof(T).FullName} must not have reference type members");
5024
}
5125
}

src/Backdash/Extensions.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using Backdash.Core;
1+
using System.Runtime.CompilerServices;
22
using Backdash.Network;
33
using Backdash.Network.Protocol;
44
using Backdash.Serialization;
@@ -17,8 +17,8 @@ public static void EnqueueNext<T>(this Queue<T> queue, in T value)
1717

1818
public static int GetTypeSize<T>(this IBinarySerializer<T> serializer) where T : struct
1919
{
20-
var dummy = new T();
21-
Span<byte> buffer = stackalloc byte[Mem.MaxStackLimit];
20+
T dummy = new();
21+
Span<byte> buffer = stackalloc byte[Unsafe.SizeOf<T>()];
2222
return serializer.Serialize(in dummy, buffer);
2323
}
2424

src/Backdash/Network/Client/UdpSocket.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ public UdpSocket(IPEndPoint bindEndpoint)
6363

6464
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
6565
{
66-
socket.IOControl((IOControlCode)SIO_UDP_CONN_RESET, [0, 0, 0, 0,], null);
66+
socket.IOControl((IOControlCode)SIO_UDP_CONN_RESET, [0, 0, 0, 0], null);
6767
socket.SetIPProtectionLevel(IPProtectionLevel.Unrestricted);
6868
}
6969

src/Backdash/Serialization/Internal/BinarySerializerFactory.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public static IBinarySerializer<TInput> ForStruct<TInput>() where TInput : struc
5151
)?
5252
.MakeGenericMethod(inputType)
5353
.Invoke(null, [networkEndianness]) as IBinarySerializer<TInput>,
54-
{ IsValueType: true, }
54+
{ IsValueType: true }
5555
when !integerInterfaces.Except(inputType.GetInterfaces().Where(i => i.IsGenericType)
5656
.Select(i => i.GetGenericTypeDefinition())).Any()
5757
=> typeof(BinarySerializerFactory)

src/Backdash/Synchronizing/Input/IRandomInputGenerator.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ public sealed class RandomInputGenerator<TInput> : IInputGenerator<TInput> where
2929
/// </summary>
3030
public RandomInputGenerator(Random? random = null)
3131
{
32-
ThrowHelpers.ThrowIfTypeTooBigForStack<TInput>();
3332
ThrowHelpers.ThrowIfTypeIsReferenceOrContainsReferences<TInput>();
3433
Random = random ?? Random.Shared;
3534
}

0 commit comments

Comments
 (0)