forked from FabianTerhorst/coreclr-module
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathIdProvider.cs
More file actions
35 lines (30 loc) · 735 Bytes
/
IdProvider.cs
File metadata and controls
35 lines (30 loc) · 735 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
using System.Collections.Generic;
namespace AltV.Net.EntitySync
{
/// <summary>
/// Default id provider that returns unique ids and reuses freed ids
/// </summary>
public class IdProvider : IIdProvider<ulong>
{
private readonly Stack<ulong> freeIds = new Stack<ulong>();
private ulong currId;
public ulong GetNext()
{
lock (freeIds)
{
if (freeIds.TryPop(out var id))
{
return id;
}
}
return currId++;
}
public void Free(ulong id)
{
lock (freeIds)
{
freeIds.Push(id);
}
}
}
}