Skip to content

Commit 5c3de40

Browse files
better stuff
1 parent 9fd32e9 commit 5c3de40

17 files changed

+192
-224
lines changed

Infinity.Multiplexer/Infinity.Multiplexer.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<ItemGroup>
44
<ProjectReference Include="..\Infinity.Core\Infinity.Core.csproj" />
55
<ProjectReference Include="..\Infinity.Udp\Infinity.Udp.csproj" />
6-
<ProjectReference Include="..\Infinity.WebSockets\Infinity.WebSockets.csproj" />
6+
<ProjectReference Include="..\Infinity.Websockets\Infinity.Websockets.csproj" />
77
</ItemGroup>
88

99
<PropertyGroup>
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
global using Xunit;
2+
[assembly: CollectionBehavior(DisableTestParallelization = true)]

Infinity.Tests/Infinity.Udp.Tests/NoConnectionUdpConnection.cs

100644100755
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,9 @@ public async Task Test_Receive(MessageWriter msg)
3737
await HandleReceive(data, data.Length);
3838
}
3939

40-
public override async Task WriteBytesToConnection(byte[] _bytes, int _length)
40+
public override async Task WriteBytesToConnection(MessageWriter _writer)
4141
{
42-
BytesSent.Add(MessageReader.Get(_bytes));
42+
BytesSent.Add(MessageReader.Get(_writer.Buffer));
4343
}
4444

4545
public override async Task Connect(MessageWriter _writer, int _timeout = 5000)
@@ -60,7 +60,7 @@ protected override void DisconnectInternal(InfinityInternalErrors _error, string
6060
{
6161
}
6262

63-
public override void WriteBytesToConnectionSync(byte[] _bytes, int _length)
63+
public override void WriteBytesToConnectionSync(MessageWriter _writer)
6464
{
6565
throw new NotImplementedException();
6666
}

Infinity.Tests/Infinity.Udp.Tests/UdpReliabilityTests.cs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,6 @@ public async Task TestReliableWrapOffByOne()
3939
SetReliableId(data, 9);
4040
await conn.Test_Receive(data);
4141

42-
data.Recycle();
43-
4442
// Both messages should be received.
4543
Assert.Equal(2, messagesReceived.Count);
4644
messagesReceived.Clear();
@@ -101,8 +99,6 @@ public async Task TestThatAllMessagesAreReceived()
10199
}
102100

103101
conn.Dispose();
104-
105-
data.Recycle();
106102
}
107103

108104
[Fact]
@@ -143,8 +139,6 @@ public async Task TestAcksForNotReceivedMessages()
143139
}
144140

145141
conn.Dispose();
146-
147-
data.Recycle();
148142
}
149143

150144
private static void SetReliableId(MessageWriter data, int i)

Infinity.Tests/Infinity.Udp.Tests/UdpTestHelper.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,6 @@ public static async Task RunClientDisconnectTest(UdpConnectionListener listener,
187187

188188
var writer = UdpMessageFactory.BuildDisconnectMessage();
189189
connection.Disconnect("Testing", writer);
190-
writer.Recycle();
191190

192191
mutex2.WaitOne(2500);
193192

Infinity.Udp/Fragmented/UdpConnection.Fragmented.cs

Lines changed: 11 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -12,37 +12,29 @@ public partial class UdpConnection
1212

1313
private const byte fragment_header_size = sizeof(byte) + sizeof(ushort) + sizeof(int) + sizeof(byte) + sizeof(ushort);
1414

15-
private async Task FragmentedSend(byte[] _buffer)
15+
private async Task FragmentedSend(MessageWriter _writer)
1616
{
1717
var fragment_size = MTU - fragment_header_size;
1818

1919
var fragment_id = (byte)Interlocked.Increment(ref last_fragment_id_allocated);
2020

21-
var fragments_count = (int)((_buffer.Length / (double)fragment_size) + 1);
21+
var fragments_count = (int)((_writer.Buffer.Length / (double)fragment_size) + 1);
2222

2323
for (ushort i = 0; i < fragments_count; i++)
2424
{
25-
var data_length = Math.Min(fragment_size, _buffer.Length - fragment_size * i);
26-
var fragment_buffer = new byte[data_length + fragment_header_size];
25+
var data_length = Math.Min(fragment_size, _writer.Buffer.Length - fragment_size * i);
26+
var fragment_writer = MessageWriter.Get();
27+
//var fragment_buffer = new byte[data_length + fragment_header_size];
2728

28-
fragment_buffer[0] = UdpSendOptionInternal.Fragment;
29+
fragment_writer.Write(UdpSendOptionInternal.Fragment);
2930

30-
AttachReliableID(fragment_buffer, 1);
31+
AttachReliableID(fragment_writer, 1);
3132

32-
fragment_buffer[3] = (byte)fragments_count;
33-
fragment_buffer[4] = (byte)(fragments_count >> 8);
34-
fragment_buffer[5] = (byte)(fragments_count >> 16);
35-
fragment_buffer[6] = (byte)(fragments_count >> 24);
33+
fragment_writer.Write(fragments_count);
34+
fragment_writer.Write(fragment_id);
35+
fragment_writer.Write(i);
3636

37-
fragment_buffer[7] = fragment_id;
38-
39-
// Add fragment sequence index
40-
fragment_buffer[8] = (byte)i;
41-
fragment_buffer[9] = (byte)(i >> 8);
42-
43-
Array.Copy(_buffer, fragment_size * i, fragment_buffer, fragment_header_size, data_length);
44-
45-
await WriteBytesToConnection(fragment_buffer, fragment_buffer.Length);
37+
await WriteBytesToConnection(fragment_writer).ConfigureAwait(false);
4638
}
4739

4840
if (last_fragment_id_allocated >= byte.MaxValue)

Infinity.Udp/Fragmented/UdpConnection.MTU.cs

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,15 @@ private async Task ExpandMTU()
8888

8989
buffer[0] = UdpSendOptionInternal.TestMTU;
9090

91-
AttachReliableID(buffer, 1, async () =>
91+
buffer[mtu - 4] = (byte)mtu;
92+
buffer[mtu - 3] = (byte)(mtu >> 8);
93+
buffer[mtu - 2] = (byte)(mtu >> 16);
94+
buffer[mtu - 1] = (byte)(mtu >> 24);
95+
96+
var writer = MessageWriter.Get();
97+
writer.Write(buffer, 0, buffer.Length);
98+
99+
AttachReliableID(writer, 1, async () =>
92100
{
93101
await mtu_lock.WaitAsync().ConfigureAwait(false);
94102
try
@@ -110,12 +118,7 @@ private async Task ExpandMTU()
110118
await ExpandMTU().ConfigureAwait(false);
111119
});
112120

113-
buffer[MTU - 4] = (byte)MTU;
114-
buffer[MTU - 3] = (byte)(MTU >> 8);
115-
buffer[MTU - 2] = (byte)(MTU >> 16);
116-
buffer[MTU - 1] = (byte)(MTU >> 24);
117-
118-
await WriteBytesToConnection(buffer, MTU);
121+
await WriteBytesToConnection(writer).ConfigureAwait(false);
119122
}
120123
finally
121124
{

Infinity.Udp/KeepAlive/UdpConnection.KeepAlive.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -81,13 +81,13 @@ private async Task SendPing()
8181
{
8282
ushort id = (ushort)Interlocked.Increment(ref last_id_allocated);
8383

84-
byte[] bytes = new byte[3];
85-
bytes[0] = UdpSendOptionInternal.Ping;
86-
bytes[1] = (byte)(id >> 8);
87-
bytes[2] = (byte)id;
84+
var writer = MessageWriter.Get();
85+
86+
writer.Write(UdpSendOptionInternal.Ping);
87+
writer.Write(id);
8888

8989
active_pings.AddPing(id);
90-
WriteBytesToConnection(bytes, bytes.Length);
90+
await WriteBytesToConnection(writer).ConfigureAwait(false);
9191
Statistics.LogPingSent(3);
9292
}
9393
}

Infinity.Udp/Ordered/UdpConnection.Ordered.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,13 @@ public partial class UdpConnection
1111
private volatile int send_sequence = 0;
1212
private volatile int receive_sequence = 0;
1313

14-
private async Task OrderedSend(byte[] _buffer)
14+
private async Task OrderedSend(MessageWriter _writer)
1515
{
16-
AttachReliableID(_buffer, 1);
16+
AttachReliableID(_writer, 1);
1717

18-
_buffer[3] = (byte)send_sequence;
18+
_writer.Buffer[3] = (byte)send_sequence;
1919

20-
await WriteBytesToConnection(_buffer, _buffer.Length);
20+
await WriteBytesToConnection(_writer).ConfigureAwait(false);
2121

2222
send_sequence = (byte)Interlocked.Increment(ref send_sequence);
2323
}

Infinity.Udp/Reliable/UdpConnection.Ack.cs

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -61,15 +61,12 @@ private async Task SendAck(ushort _id)
6161
}
6262
}
6363

64-
byte[] bytes = new byte[]
65-
{
66-
UdpSendOptionInternal.Acknowledgement,
67-
(byte)(_id >> 8),
68-
(byte)(_id >> 0),
69-
recent_packets
70-
};
64+
var writer = MessageWriter.Get();
65+
writer.Write(UdpSendOptionInternal.Acknowledgement);
66+
writer.Write(_id);
67+
writer.Write(recent_packets);
7168

72-
await WriteBytesToConnection(bytes, bytes.Length);
69+
await WriteBytesToConnection(writer).ConfigureAwait(false);
7370
}
7471
}
7572
}

0 commit comments

Comments
 (0)