Skip to content

Commit 86d76cc

Browse files
committed
feat: update LiteNetLib to v.2.0.2
1 parent 32f6efb commit 86d76cc

5 files changed

Lines changed: 92 additions & 46 deletions

File tree

Plugins/LiteNetLib/LiteNetLib.csproj

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,11 @@
1010

1111
<GenerateDocumentationFile>true</GenerateDocumentationFile>
1212
<NoWarn>1701;1702;1705;1591</NoWarn>
13-
<PackageVersion>2.0.0</PackageVersion>
13+
<PackageVersion>2.0.2</PackageVersion>
1414
<Title>Lite reliable UDP library for Mono and .NET </Title>
1515
<IsTrimmable>true</IsTrimmable>
1616
<EnableTrimAnalyzer>true</EnableTrimAnalyzer>
17-
<AssemblyVersion>2.0.0</AssemblyVersion>
17+
<AssemblyVersion>2.0.2</AssemblyVersion>
1818
</PropertyGroup>
1919

2020
<PropertyGroup Condition="'$(Configuration)'=='Debug'">
@@ -33,14 +33,14 @@
3333
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
3434
<DefineConstants>$(DefineConstants);LITENETLIB_UNSAFE</DefineConstants>
3535
<PackageTags>udp reliable-udp network</PackageTags>
36-
<PackageReleaseNotes>https://github.com/RevenantX/LiteNetLib/releases/tag/2.0.0</PackageReleaseNotes>
36+
<PackageReleaseNotes>https://github.com/RevenantX/LiteNetLib/releases/tag/2.0.2</PackageReleaseNotes>
3737
<RepositoryType>git</RepositoryType>
3838
<RepositoryUrl>https://github.com/RevenantX/LiteNetLib</RepositoryUrl>
3939
<PackageProjectUrl>https://github.com/RevenantX/LiteNetLib</PackageProjectUrl>
4040
<PackageLicenseExpression>MIT</PackageLicenseExpression>
4141
<GeneratePackageOnBuild>True</GeneratePackageOnBuild>
4242
<Authors>Ruslan Pyrch</Authors>
43-
<Copyright>Copyright 2025 Ruslan Pyrch</Copyright>
43+
<Copyright>Copyright 2026 Ruslan Pyrch</Copyright>
4444
<Description>Lite reliable UDP library for .NET, Mono, and .NET Core</Description>
4545
<PackageIcon>LNL.png</PackageIcon>
4646
<PackageReadmeFile>README.md</PackageReadmeFile>

Plugins/LiteNetLib/LiteNetManager.cs

Lines changed: 12 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,12 @@ namespace LiteNetLib
1919
/// </summary>
2020
public partial class LiteNetManager : IEnumerable<LiteNetPeer>
2121
{
22-
public struct NetPeerEnumerator : IEnumerator<LiteNetPeer>
22+
public struct NetPeerEnumerator<T> : IEnumerator<T> where T : LiteNetPeer
2323
{
24-
private readonly LiteNetPeer _initialPeer;
25-
private LiteNetPeer _p;
24+
private readonly T _initialPeer;
25+
private T _p;
2626

27-
public NetPeerEnumerator(LiteNetPeer p)
27+
public NetPeerEnumerator(T p)
2828
{
2929
_initialPeer = p;
3030
_p = null;
@@ -34,14 +34,14 @@ public void Dispose() { }
3434

3535
public bool MoveNext()
3636
{
37-
_p = _p == null ? _initialPeer : _p.NextPeer;
37+
_p = _p == null ? _initialPeer : (T)_p.NextPeer;
3838
return _p != null;
3939
}
4040

4141
public void Reset() =>
4242
throw new NotSupportedException();
4343

44-
public LiteNetPeer Current => _p;
44+
public T Current => _p;
4545
object IEnumerator.Current => _p;
4646
}
4747

@@ -1047,24 +1047,13 @@ public void SendToAll(byte[] data, DeliveryMethod options) =>
10471047
/// <param name="start">Start of data</param>
10481048
/// <param name="length">Length of data</param>
10491049
/// <param name="options">Send options (reliable, unreliable, etc.)</param>
1050-
public void SendToAll(byte[] data, int start, int length, DeliveryMethod options) =>
1051-
SendToAll(data, start, length, 0, options);
1052-
1053-
/// <summary>
1054-
/// Send data to all connected peers
1055-
/// </summary>
1056-
/// <param name="data">Data</param>
1057-
/// <param name="start">Start of data</param>
1058-
/// <param name="length">Length of data</param>
1059-
/// <param name="channelNumber">Number of channel (from 0 to channelsCount - 1)</param>
1060-
/// <param name="options">Send options (reliable, unreliable, etc.)</param>
1061-
public void SendToAll(byte[] data, int start, int length, byte channelNumber, DeliveryMethod options)
1050+
public void SendToAll(byte[] data, int start, int length, DeliveryMethod options)
10621051
{
10631052
try
10641053
{
10651054
_peersLock.EnterReadLock();
10661055
for (var netPeer = _headPeer; netPeer != null; netPeer = netPeer.NextPeer)
1067-
netPeer.Send(data, start, length, channelNumber, options);
1056+
netPeer.Send(data, start, length, options);
10681057
}
10691058
finally
10701059
{
@@ -1632,13 +1621,13 @@ public void DisconnectPeer(LiteNetPeer peer, byte[] data, int start, int count)
16321621
null);
16331622
}
16341623

1635-
public NetPeerEnumerator GetEnumerator() =>
1636-
new NetPeerEnumerator(_headPeer);
1624+
public NetPeerEnumerator<LiteNetPeer> GetEnumerator() =>
1625+
new NetPeerEnumerator<LiteNetPeer>(_headPeer);
16371626

16381627
IEnumerator<LiteNetPeer> IEnumerable<LiteNetPeer>.GetEnumerator() =>
1639-
new NetPeerEnumerator(_headPeer);
1628+
new NetPeerEnumerator<LiteNetPeer>(_headPeer);
16401629

16411630
IEnumerator IEnumerable.GetEnumerator() =>
1642-
new NetPeerEnumerator(_headPeer);
1631+
new NetPeerEnumerator<LiteNetPeer>(_headPeer);
16431632
}
16441633
}

Plugins/LiteNetLib/LiteNetPeer.cs

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -551,22 +551,6 @@ public void Send(NetDataWriter dataWriter, DeliveryMethod deliveryMethod) =>
551551
public void Send(byte[] data, int start, int length, DeliveryMethod options) =>
552552
SendInternal(new ReadOnlySpan<byte>(data, start, length), 0, options, null);
553553

554-
/// <summary>
555-
/// Send data to peer
556-
/// </summary>
557-
/// <param name="data">Data</param>
558-
/// <param name="start">Start of data</param>
559-
/// <param name="length">Length of data</param>
560-
/// <param name="channelNumber">Number of channel (from 0 to channelsCount - 1)</param>
561-
/// <param name="deliveryMethod">Delivery method (reliable, unreliable, etc.)</param>
562-
/// <exception cref="TooBigPacketException">
563-
/// If size exceeds maximum limit:<para/>
564-
/// MTU - headerSize bytes for Unreliable<para/>
565-
/// Fragment count exceeded ushort.MaxValue<para/>
566-
/// </exception>
567-
public void Send(byte[] data, int start, int length, byte channelNumber, DeliveryMethod deliveryMethod) =>
568-
SendInternal(new ReadOnlySpan<byte>(data, start, length), channelNumber, deliveryMethod, null);
569-
570554
/// <summary>
571555
/// Send data to peer with delivery event called
572556
/// </summary>

Plugins/LiteNetLib/NetManager.cs

Lines changed: 60 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ namespace LiteNetLib
1010
/// <summary>
1111
/// More feature rich network manager with adjustable channels count
1212
/// </summary>
13-
public class NetManager : LiteNetManager
13+
public class NetManager : LiteNetManager, IEnumerable<NetPeer>
1414
{
1515
private readonly INetEventListener _netEventListener;
1616
private byte _channelsCount = 1;
@@ -30,6 +30,35 @@ public byte ChannelsCount
3030
}
3131
}
3232

33+
/// <summary>
34+
/// First peer. Useful for Client mode
35+
/// </summary>
36+
public new NetPeer FirstPeer => (NetPeer)_headPeer;
37+
38+
/// <summary>
39+
/// Get copy of peers (without allocations)
40+
/// </summary>
41+
/// <param name="peers">List that will contain result</param>
42+
/// <param name="peerState">State of peers</param>
43+
public void GetPeers(List<NetPeer> peers, ConnectionState peerState)
44+
{
45+
peers.Clear();
46+
_peersLock.EnterReadLock();
47+
for (var netPeer = _headPeer; netPeer != null; netPeer = netPeer.NextPeer)
48+
{
49+
if ((netPeer.ConnectionState & peerState) != 0)
50+
peers.Add((NetPeer)netPeer);
51+
}
52+
_peersLock.ExitReadLock();
53+
}
54+
55+
/// <summary>
56+
/// Get copy of connected peers (without allocations)
57+
/// </summary>
58+
/// <param name="peers">List that will contain result</param>
59+
public void GetConnectedPeers(List<NetPeer> peers) =>
60+
GetPeers(peers, ConnectionState.Connected);
61+
3362
public NetManager(INetEventListener listener, PacketLayerBase extraPacketLayer = null) : base(null, extraPacketLayer) =>
3463
_netEventListener = listener;
3564

@@ -249,8 +278,8 @@ public void SendToAll(byte[] data, int start, int length, byte channelNumber, De
249278
_peersLock.EnterReadLock();
250279
for (var netPeer = _headPeer; netPeer != null; netPeer = netPeer.NextPeer)
251280
{
252-
if (!ReferenceEquals(netPeer, excludePeer))
253-
netPeer.Send(data, start, length, channelNumber, options);
281+
if (netPeer != excludePeer)
282+
((NetPeer)netPeer).Send(data, start, length, channelNumber, options);
254283
}
255284
}
256285
finally
@@ -259,6 +288,28 @@ public void SendToAll(byte[] data, int start, int length, byte channelNumber, De
259288
}
260289
}
261290

291+
/// <summary>
292+
/// Send data to all connected peers
293+
/// </summary>
294+
/// <param name="data">Data</param>
295+
/// <param name="start">Start of data</param>
296+
/// <param name="length">Length of data</param>
297+
/// <param name="channelNumber">Number of channel (from 0 to channelsCount - 1)</param>
298+
/// <param name="options">Send options (reliable, unreliable, etc.)</param>
299+
public void SendToAll(byte[] data, int start, int length, byte channelNumber, DeliveryMethod options)
300+
{
301+
try
302+
{
303+
_peersLock.EnterReadLock();
304+
for (var netPeer = _headPeer; netPeer != null; netPeer = netPeer.NextPeer)
305+
((NetPeer)netPeer).Send(data, start, length, channelNumber, options);
306+
}
307+
finally
308+
{
309+
_peersLock.ExitReadLock();
310+
}
311+
}
312+
262313
/// <summary>
263314
/// Connect to remote host
264315
/// </summary>
@@ -310,5 +361,11 @@ public void SendToAll(byte[] data, int start, int length, byte channelNumber, De
310361
/// <exception cref="InvalidOperationException">Manager is not running. Call <see cref="LiteNetManager.Start()"/></exception>
311362
public new NetPeer Connect(IPEndPoint target, ReadOnlySpan<byte> connectionData) =>
312363
(NetPeer)base.Connect(target, connectionData);
364+
365+
public new NetPeerEnumerator<NetPeer> GetEnumerator() =>
366+
new NetPeerEnumerator<NetPeer>((NetPeer)_headPeer);
367+
368+
IEnumerator<NetPeer> IEnumerable<NetPeer>.GetEnumerator() =>
369+
new NetPeerEnumerator<NetPeer>((NetPeer)_headPeer);
313370
}
314371
}

Plugins/LiteNetLib/NetPeer.cs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,22 @@ public void Send(byte[] data, byte channelNumber, DeliveryMethod deliveryMethod)
166166
public void Send(ReadOnlySpan<byte> data, byte channelNumber, DeliveryMethod deliveryMethod) =>
167167
SendInternal(data, channelNumber, deliveryMethod, null);
168168

169+
/// <summary>
170+
/// Send data to peer
171+
/// </summary>
172+
/// <param name="data">Data</param>
173+
/// <param name="start">Start of data</param>
174+
/// <param name="length">Length of data</param>
175+
/// <param name="channelNumber">Number of channel (from 0 to channelsCount - 1)</param>
176+
/// <param name="deliveryMethod">Delivery method (reliable, unreliable, etc.)</param>
177+
/// <exception cref="TooBigPacketException">
178+
/// If size exceeds maximum limit:<para/>
179+
/// MTU - headerSize bytes for Unreliable<para/>
180+
/// Fragment count exceeded ushort.MaxValue<para/>
181+
/// </exception>
182+
public void Send(byte[] data, int start, int length, byte channelNumber, DeliveryMethod deliveryMethod) =>
183+
SendInternal(new ReadOnlySpan<byte>(data, start, length), channelNumber, deliveryMethod, null);
184+
169185
/// <summary>
170186
/// Returns packets count in queue for reliable channel
171187
/// </summary>

0 commit comments

Comments
 (0)