feat(server): add packet registry and scoped packet resolution

This commit is contained in:
EmirHanMamak 2026-01-18 19:19:15 +03:00
parent 3589ac80fa
commit be00b3542e
33 changed files with 429 additions and 17 deletions

View file

@ -1,6 +1,7 @@
using System; using System;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Playvoi.Server.Shared.Registry;
namespace Playvoi.Server.Infrastructure; namespace Playvoi.Server.Infrastructure;
@ -18,5 +19,6 @@ public static class Container
{ {
services.AddLogging(c => c.AddSimpleConsole()); services.AddLogging(c => c.AddSimpleConsole());
services.AddSingleton<NetworkServer>(); services.AddSingleton<NetworkServer>();
services.AddSingleton<PacketRegistry>();
} }
} }

View file

@ -3,14 +3,29 @@ using System.Collections.Generic;
using System.Net; using System.Net;
using System.Net.Sockets; using System.Net.Sockets;
using System.Text; using System.Text;
using _Network.Shared;
using _Network.Shared.Interface;
using LiteNetLib; using LiteNetLib;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Playvoi.Server.Shared;
using Playvoi.Server.Shared.Registry;
namespace Playvoi.Server; namespace Playvoi.Server;
public class NetworkServer : INetEventListener public class NetworkServer : INetEventListener
{ {
private readonly ILogger<NetworkServer> _logger;
private readonly IServiceProvider _serviceProvider;
private NetManager _netManager; private NetManager _netManager;
private Dictionary<int, NetPeer> _connections; private Dictionary<int, NetPeer> _connections;
public NetworkServer(ILogger<NetworkServer> logger, IServiceProvider serviceProvider)
{
_logger = logger;
_serviceProvider = serviceProvider;
}
public void Start() public void Start()
{ {
_connections = new Dictionary<int, NetPeer>(); _connections = new Dictionary<int, NetPeer>();
@ -26,15 +41,34 @@ public class NetworkServer : INetEventListener
{ {
_netManager.PollEvents(); _netManager.PollEvents();
} }
public void OnNetworkReceive(NetPeer peer, NetPacketReader reader, byte channelNumber, DeliveryMethod deliveryMethod)
{
var data = Encoding.UTF8.GetString(reader.RawData);
Console.WriteLine($"Data received from client : {data}");
var replay = "Ehm Replay"; public void OnNetworkReceive(NetPeer peer, NetPacketReader reader, byte channelNumber,
var bytes = Encoding.UTF8.GetBytes(replay); DeliveryMethod deliveryMethod)
peer.Send(bytes, DeliveryMethod.ReliableOrdered); {
using (var scope = _serviceProvider.CreateScope())
{
try
{
var packetType = (PacketType)reader.GetByte();
var packet = ResolvePacket(packetType, reader);
// var handler = ResolveHandler(packetType);
// handler.Handle(packet, peer.Id);
reader.Recycle();
} }
catch (Exception ex)
{
_logger.LogError(ex, "Error processing message of XX");
}
}
// var data = Encoding.UTF8.GetString(reader.RawData);
// Console.WriteLine($"Data received from client : {data}");
//
// var replay = "Ehm Replay";
// var bytes = Encoding.UTF8.GetBytes(replay);
// peer.Send(bytes, DeliveryMethod.ReliableOrdered);
}
public void OnPeerConnected(NetPeer peer) public void OnPeerConnected(NetPeer peer)
{ {
Console.WriteLine($"Client connected:{peer.Id}:{peer.Address}:{peer.Port}"); Console.WriteLine($"Client connected:{peer.Id}:{peer.Address}:{peer.Port}");
@ -52,18 +86,26 @@ public class NetworkServer : INetEventListener
Console.WriteLine($"Incoming connection from {request.RemoteEndPoint}"); Console.WriteLine($"Incoming connection from {request.RemoteEndPoint}");
request.Accept(); request.Accept();
} }
public void OnNetworkError(IPEndPoint endPoint, SocketError socketError) public void OnNetworkError(IPEndPoint endPoint, SocketError socketError)
{ {
} }
public void OnNetworkReceiveUnconnected(IPEndPoint remoteEndPoint, NetPacketReader reader, UnconnectedMessageType messageType) public void OnNetworkReceiveUnconnected(IPEndPoint remoteEndPoint, NetPacketReader reader,
UnconnectedMessageType messageType)
{ {
} }
public void OnNetworkLatencyUpdate(NetPeer peer, int latency) public void OnNetworkLatencyUpdate(NetPeer peer, int latency)
{ {
}
private INetPacket ResolvePacket(PacketType packetType, NetPacketReader reader)
{
var registery = _serviceProvider.GetRequiredService<PacketRegistry>();
var type = registery.PacketTypes[packetType];
var packet = (INetPacket)Activator.CreateInstance(type);
packet.Deserialize(reader);
return packet;
} }
} }

View file

@ -0,0 +1,37 @@
using System;
using System.Collections.Generic;
using System.Linq;
using _Network.Shared;
using _Network.Shared.Interface;
namespace Playvoi.Server.Shared.Registry;
public class PacketRegistry
{
private Dictionary<PacketType, Type> _packetTypes = new Dictionary<PacketType, Type>();
public Dictionary<PacketType, Type> PacketTypes
{
get
{
if (_packetTypes.Count == 0)
{
Initalize();
}
return _packetTypes;
}
}
private void Initalize()
{
var packetType = typeof(INetPacket);
var packets = AppDomain.CurrentDomain.GetAssemblies().SelectMany(s => s.GetTypes())
.Where(p => packetType.IsAssignableFrom(p) && !p.IsInterface);
foreach (var packet in packets)
{
var instance = (INetPacket)Activator.CreateInstance(packet);
_packetTypes.Add(instance.Type, packet);
}
}
}

View file

@ -8,7 +8,10 @@
".NETCoreApp,Version=v9.0": { ".NETCoreApp,Version=v9.0": {
"Playvoi.Server/1.0.0": { "Playvoi.Server/1.0.0": {
"dependencies": { "dependencies": {
"LiteNetLib": "1.3.5" "LiteNetLib": "1.3.5",
"Microsoft.Extensions.DependencyInjection": "10.0.2",
"Microsoft.Extensions.Logging": "10.0.2",
"Microsoft.Extensions.Logging.Console": "10.0.2"
}, },
"runtime": { "runtime": {
"Playvoi.Server.dll": {} "Playvoi.Server.dll": {}
@ -21,6 +24,204 @@
"fileVersion": "1.3.5.0" "fileVersion": "1.3.5.0"
} }
} }
},
"Microsoft.Extensions.Configuration/10.0.2": {
"dependencies": {
"Microsoft.Extensions.Configuration.Abstractions": "10.0.2",
"Microsoft.Extensions.Primitives": "10.0.2"
},
"runtime": {
"lib/net9.0/Microsoft.Extensions.Configuration.dll": {
"assemblyVersion": "10.0.0.0",
"fileVersion": "10.0.225.61305"
}
}
},
"Microsoft.Extensions.Configuration.Abstractions/10.0.2": {
"dependencies": {
"Microsoft.Extensions.Primitives": "10.0.2"
},
"runtime": {
"lib/net9.0/Microsoft.Extensions.Configuration.Abstractions.dll": {
"assemblyVersion": "10.0.0.0",
"fileVersion": "10.0.225.61305"
}
}
},
"Microsoft.Extensions.Configuration.Binder/10.0.2": {
"dependencies": {
"Microsoft.Extensions.Configuration": "10.0.2",
"Microsoft.Extensions.Configuration.Abstractions": "10.0.2"
},
"runtime": {
"lib/net9.0/Microsoft.Extensions.Configuration.Binder.dll": {
"assemblyVersion": "10.0.0.0",
"fileVersion": "10.0.225.61305"
}
}
},
"Microsoft.Extensions.DependencyInjection/10.0.2": {
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.2"
},
"runtime": {
"lib/net9.0/Microsoft.Extensions.DependencyInjection.dll": {
"assemblyVersion": "10.0.0.0",
"fileVersion": "10.0.225.61305"
}
}
},
"Microsoft.Extensions.DependencyInjection.Abstractions/10.0.2": {
"runtime": {
"lib/net9.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {
"assemblyVersion": "10.0.0.0",
"fileVersion": "10.0.225.61305"
}
}
},
"Microsoft.Extensions.Logging/10.0.2": {
"dependencies": {
"Microsoft.Extensions.DependencyInjection": "10.0.2",
"Microsoft.Extensions.Logging.Abstractions": "10.0.2",
"Microsoft.Extensions.Options": "10.0.2"
},
"runtime": {
"lib/net9.0/Microsoft.Extensions.Logging.dll": {
"assemblyVersion": "10.0.0.0",
"fileVersion": "10.0.225.61305"
}
}
},
"Microsoft.Extensions.Logging.Abstractions/10.0.2": {
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.2",
"System.Diagnostics.DiagnosticSource": "10.0.2"
},
"runtime": {
"lib/net9.0/Microsoft.Extensions.Logging.Abstractions.dll": {
"assemblyVersion": "10.0.0.0",
"fileVersion": "10.0.225.61305"
}
}
},
"Microsoft.Extensions.Logging.Configuration/10.0.2": {
"dependencies": {
"Microsoft.Extensions.Configuration": "10.0.2",
"Microsoft.Extensions.Configuration.Abstractions": "10.0.2",
"Microsoft.Extensions.Configuration.Binder": "10.0.2",
"Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.2",
"Microsoft.Extensions.Logging": "10.0.2",
"Microsoft.Extensions.Logging.Abstractions": "10.0.2",
"Microsoft.Extensions.Options": "10.0.2",
"Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.2"
},
"runtime": {
"lib/net9.0/Microsoft.Extensions.Logging.Configuration.dll": {
"assemblyVersion": "10.0.0.0",
"fileVersion": "10.0.225.61305"
}
}
},
"Microsoft.Extensions.Logging.Console/10.0.2": {
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.2",
"Microsoft.Extensions.Logging": "10.0.2",
"Microsoft.Extensions.Logging.Abstractions": "10.0.2",
"Microsoft.Extensions.Logging.Configuration": "10.0.2",
"Microsoft.Extensions.Options": "10.0.2",
"System.Text.Json": "10.0.2"
},
"runtime": {
"lib/net9.0/Microsoft.Extensions.Logging.Console.dll": {
"assemblyVersion": "10.0.0.0",
"fileVersion": "10.0.225.61305"
}
}
},
"Microsoft.Extensions.Options/10.0.2": {
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.2",
"Microsoft.Extensions.Primitives": "10.0.2"
},
"runtime": {
"lib/net9.0/Microsoft.Extensions.Options.dll": {
"assemblyVersion": "10.0.0.0",
"fileVersion": "10.0.225.61305"
}
}
},
"Microsoft.Extensions.Options.ConfigurationExtensions/10.0.2": {
"dependencies": {
"Microsoft.Extensions.Configuration.Abstractions": "10.0.2",
"Microsoft.Extensions.Configuration.Binder": "10.0.2",
"Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.2",
"Microsoft.Extensions.Options": "10.0.2",
"Microsoft.Extensions.Primitives": "10.0.2"
},
"runtime": {
"lib/net9.0/Microsoft.Extensions.Options.ConfigurationExtensions.dll": {
"assemblyVersion": "10.0.0.0",
"fileVersion": "10.0.225.61305"
}
}
},
"Microsoft.Extensions.Primitives/10.0.2": {
"runtime": {
"lib/net9.0/Microsoft.Extensions.Primitives.dll": {
"assemblyVersion": "10.0.0.0",
"fileVersion": "10.0.225.61305"
}
}
},
"System.Diagnostics.DiagnosticSource/10.0.2": {
"runtime": {
"lib/net9.0/System.Diagnostics.DiagnosticSource.dll": {
"assemblyVersion": "10.0.0.0",
"fileVersion": "10.0.225.61305"
}
}
},
"System.IO.Pipelines/10.0.2": {
"runtime": {
"lib/net9.0/System.IO.Pipelines.dll": {
"assemblyVersion": "10.0.0.0",
"fileVersion": "10.0.225.61305"
}
}
},
"System.Text.Encodings.Web/10.0.2": {
"runtime": {
"lib/net9.0/System.Text.Encodings.Web.dll": {
"assemblyVersion": "10.0.0.0",
"fileVersion": "10.0.225.61305"
}
},
"runtimeTargets": {
"runtimes/browser/lib/net8.0/System.Text.Encodings.Web.dll": {
"rid": "browser",
"assetType": "runtime",
"assemblyVersion": "10.0.0.0",
"fileVersion": "10.0.225.61305"
},
"runtimes/win/lib/net9.0/System.Text.Encodings.Web.dll": {
"rid": "win",
"assetType": "runtime",
"assemblyVersion": "10.0.0.0",
"fileVersion": "10.0.225.61305"
}
}
},
"System.Text.Json/10.0.2": {
"dependencies": {
"System.IO.Pipelines": "10.0.2",
"System.Text.Encodings.Web": "10.0.2"
},
"runtime": {
"lib/net9.0/System.Text.Json.dll": {
"assemblyVersion": "10.0.0.0",
"fileVersion": "10.0.225.61305"
}
}
} }
} }
}, },
@ -36,6 +237,118 @@
"sha512": "sha512-WKJEIdQfLDWFEzdKpLZzwB9Umci/2TWxX6ZZnZHhbJ4Z0c1eccS2pZpgUFcHtEnrUY+H1vOFqxzOrgoQpG6unQ==", "sha512": "sha512-WKJEIdQfLDWFEzdKpLZzwB9Umci/2TWxX6ZZnZHhbJ4Z0c1eccS2pZpgUFcHtEnrUY+H1vOFqxzOrgoQpG6unQ==",
"path": "litenetlib/1.3.5", "path": "litenetlib/1.3.5",
"hashPath": "litenetlib.1.3.5.nupkg.sha512" "hashPath": "litenetlib.1.3.5.nupkg.sha512"
},
"Microsoft.Extensions.Configuration/10.0.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-Lws+o4DFw6p5NquRoYA3d5QVvi49ugNw7TxbW4QGLsL8F1LCCyJqWFy0+RMQ/hzUuS9aKV5NJ/XGAF5N9/RQcQ==",
"path": "microsoft.extensions.configuration/10.0.2",
"hashPath": "microsoft.extensions.configuration.10.0.2.nupkg.sha512"
},
"Microsoft.Extensions.Configuration.Abstractions/10.0.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-KC5PslaTDnTuTvyke0KYAVBYdZ7IVTsU3JhHe69BpEbHLcj1YThP3bIGtZNOkZfast2AuLnul5lk4rZKxAdUGQ==",
"path": "microsoft.extensions.configuration.abstractions/10.0.2",
"hashPath": "microsoft.extensions.configuration.abstractions.10.0.2.nupkg.sha512"
},
"Microsoft.Extensions.Configuration.Binder/10.0.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-/SdW50prUuenglSy7MXU3eVQkOk4/J4fjc+GIhv4NkTmaZOQyTqpVAYi8nRjNtOKHzCy7g5cSlOSgkbT7clLwQ==",
"path": "microsoft.extensions.configuration.binder/10.0.2",
"hashPath": "microsoft.extensions.configuration.binder.10.0.2.nupkg.sha512"
},
"Microsoft.Extensions.DependencyInjection/10.0.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-J/Zmp6fY93JbaiZ11ckWvcyxMPjD6XVwIHQXBjryTBgn7O6O20HYg9uVLFcZlNfgH78MnreE/7EH+hjfzn7VyA==",
"path": "microsoft.extensions.dependencyinjection/10.0.2",
"hashPath": "microsoft.extensions.dependencyinjection.10.0.2.nupkg.sha512"
},
"Microsoft.Extensions.DependencyInjection.Abstractions/10.0.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-zOIurr59+kUf9vNcsUkCvKWZv+fPosUZXURZesYkJCvl0EzTc9F7maAO4Cd2WEV7ZJJ0AZrFQvuH6Npph9wdBw==",
"path": "microsoft.extensions.dependencyinjection.abstractions/10.0.2",
"hashPath": "microsoft.extensions.dependencyinjection.abstractions.10.0.2.nupkg.sha512"
},
"Microsoft.Extensions.Logging/10.0.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-a0EWuBs6D3d7XMGroDXm+WsAi5CVVfjOJvyxurzWnuhBN9CO+1qHKcrKV1JK7H/T4ZtHIoVCOX/YyWM8K87qtw==",
"path": "microsoft.extensions.logging/10.0.2",
"hashPath": "microsoft.extensions.logging.10.0.2.nupkg.sha512"
},
"Microsoft.Extensions.Logging.Abstractions/10.0.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-RZkez/JjpnO+MZ6efKkSynN6ZztLpw3WbxNzjLCPBd97wWj1S9ZYPWi0nmT4kWBRa6atHsdM1ydGkUr8GudyDQ==",
"path": "microsoft.extensions.logging.abstractions/10.0.2",
"hashPath": "microsoft.extensions.logging.abstractions.10.0.2.nupkg.sha512"
},
"Microsoft.Extensions.Logging.Configuration/10.0.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-XVtNJfLZVTDmQS5RCUjIr7QEAgGhJ3yQ0L3PduN7rE4aijmqYl0pIF09ZSU8jgnxml91Mw59ze220g8S7anaOg==",
"path": "microsoft.extensions.logging.configuration/10.0.2",
"hashPath": "microsoft.extensions.logging.configuration.10.0.2.nupkg.sha512"
},
"Microsoft.Extensions.Logging.Console/10.0.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-Z6gBfpHqJsz2hGH+eUQUQI+DSHsDNhTKt8toHAtDhYFRlxUN1FKPKzNmTgSrAz1gtDTOBjDU5lQZ50463Ehw7A==",
"path": "microsoft.extensions.logging.console/10.0.2",
"hashPath": "microsoft.extensions.logging.console.10.0.2.nupkg.sha512"
},
"Microsoft.Extensions.Options/10.0.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-1De2LJjmxdqopI5AYC5dIhoZQ79AR5ayywxNF1rXrXFtKQfbQOV9+n/IsZBa7qWlr0MqoGpW8+OY2v/57udZOA==",
"path": "microsoft.extensions.options/10.0.2",
"hashPath": "microsoft.extensions.options.10.0.2.nupkg.sha512"
},
"Microsoft.Extensions.Options.ConfigurationExtensions/10.0.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-8njGDg0OdDBM4Zox0ybuUOJZkQ8HcH49F+POZBlG+nsfzEyqOCHyHEkWeRVI62qsssiugUVEKqUttT1ZbV0aJQ==",
"path": "microsoft.extensions.options.configurationextensions/10.0.2",
"hashPath": "microsoft.extensions.options.configurationextensions.10.0.2.nupkg.sha512"
},
"Microsoft.Extensions.Primitives/10.0.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-QmSiO+oLBEooGgB3i0GRXyeYRDHjllqt3k365jwfZlYWhvSHA3UL2NEVV5m8aZa041eIlblo6KMI5txvTMpTwA==",
"path": "microsoft.extensions.primitives/10.0.2",
"hashPath": "microsoft.extensions.primitives.10.0.2.nupkg.sha512"
},
"System.Diagnostics.DiagnosticSource/10.0.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-lYWBy8fKkJHaRcOuw30d67PrtVjR5754sz5Wl76s8P+vJ9FSThh9b7LIcTSODx1LY7NB3Srvg+JMnzd67qNZOw==",
"path": "system.diagnostics.diagnosticsource/10.0.2",
"hashPath": "system.diagnostics.diagnosticsource.10.0.2.nupkg.sha512"
},
"System.IO.Pipelines/10.0.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-EqMsn9r18ABvTDxrDce4OWDhBE3y+rR23ilG7Y3BudDKrDKrLG/hkD/JmeFZbctAPxSkCjyJ/Ddwbn/g7ufRJA==",
"path": "system.io.pipelines/10.0.2",
"hashPath": "system.io.pipelines.10.0.2.nupkg.sha512"
},
"System.Text.Encodings.Web/10.0.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-Ro4cLT4qpRy64crfLAy3ekihtXckeXrD5eI6qb6NDSEVyHcHsmH7KgN4dbnIuiBmXIoaCslx4SynLYxag1SLSQ==",
"path": "system.text.encodings.web/10.0.2",
"hashPath": "system.text.encodings.web.10.0.2.nupkg.sha512"
},
"System.Text.Json/10.0.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-zy8ey7I16G9neZ6uzxrnYwS7pidElzN8XarsBjGu7lE2m7afTKMEe18KbY3ZSmh/z/bR40oxjd6hlUcmOEaMHw==",
"path": "system.text.json/10.0.2",
"hashPath": "system.text.json.10.0.2.nupkg.sha512"
} }
} }
} }

View file

@ -13,7 +13,7 @@ using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("Playvoi.Server")] [assembly: System.Reflection.AssemblyCompanyAttribute("Playvoi.Server")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Release")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+afad3fb87e167c685be7b8cc2febe173d11dd35b")] [assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+3589ac80fa6d7b979ad9f34d2b1288abade43732")]
[assembly: System.Reflection.AssemblyProductAttribute("Playvoi.Server")] [assembly: System.Reflection.AssemblyProductAttribute("Playvoi.Server")]
[assembly: System.Reflection.AssemblyTitleAttribute("Playvoi.Server")] [assembly: System.Reflection.AssemblyTitleAttribute("Playvoi.Server")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]

View file

@ -1 +1 @@
5afdae457c1e8d981a0af15be79c63fbb3331cbc343d892d6e579202af8f5d8b 4255e08552961883e2b970260df1fb32d18ac55b11416091dcdcb95773630632

View file

@ -1 +1 @@
93e5d40e9fa299613996065e17f6cd85fbad4a2f79a5140baa0b18e860f4e6fa 3b032047bbbb0308a07922c6422b23b81574c160df35960901446a4c6151da34

View file

@ -15,3 +15,21 @@ F:\_Work\_PersonelWorks\Playvoi\Playvoi.Server\Playvoi.Server\Playvoi.Server\obj
F:\_Work\_PersonelWorks\Playvoi\Playvoi.Server\Playvoi.Server\Playvoi.Server\bin\Release\net9.0\LiteNetLib.dll F:\_Work\_PersonelWorks\Playvoi\Playvoi.Server\Playvoi.Server\Playvoi.Server\bin\Release\net9.0\LiteNetLib.dll
F:\_Work\_PersonelWorks\Playvoi\Playvoi.Server\Playvoi.Server\Playvoi.Server\obj\Release\net9.0\Playvoi.Server.csproj.AssemblyReference.cache F:\_Work\_PersonelWorks\Playvoi\Playvoi.Server\Playvoi.Server\Playvoi.Server\obj\Release\net9.0\Playvoi.Server.csproj.AssemblyReference.cache
F:\_Work\_PersonelWorks\Playvoi\Playvoi.Server\Playvoi.Server\Playvoi.Server\obj\Release\net9.0\Playvoi..EE84DD13.Up2Date F:\_Work\_PersonelWorks\Playvoi\Playvoi.Server\Playvoi.Server\Playvoi.Server\obj\Release\net9.0\Playvoi..EE84DD13.Up2Date
F:\_Work\_PersonelWorks\Playvoi\Playvoi.Server\Playvoi.Server\Playvoi.Server\bin\Release\net9.0\Microsoft.Extensions.Configuration.dll
F:\_Work\_PersonelWorks\Playvoi\Playvoi.Server\Playvoi.Server\Playvoi.Server\bin\Release\net9.0\Microsoft.Extensions.Configuration.Abstractions.dll
F:\_Work\_PersonelWorks\Playvoi\Playvoi.Server\Playvoi.Server\Playvoi.Server\bin\Release\net9.0\Microsoft.Extensions.Configuration.Binder.dll
F:\_Work\_PersonelWorks\Playvoi\Playvoi.Server\Playvoi.Server\Playvoi.Server\bin\Release\net9.0\Microsoft.Extensions.DependencyInjection.dll
F:\_Work\_PersonelWorks\Playvoi\Playvoi.Server\Playvoi.Server\Playvoi.Server\bin\Release\net9.0\Microsoft.Extensions.DependencyInjection.Abstractions.dll
F:\_Work\_PersonelWorks\Playvoi\Playvoi.Server\Playvoi.Server\Playvoi.Server\bin\Release\net9.0\Microsoft.Extensions.Logging.dll
F:\_Work\_PersonelWorks\Playvoi\Playvoi.Server\Playvoi.Server\Playvoi.Server\bin\Release\net9.0\Microsoft.Extensions.Logging.Abstractions.dll
F:\_Work\_PersonelWorks\Playvoi\Playvoi.Server\Playvoi.Server\Playvoi.Server\bin\Release\net9.0\Microsoft.Extensions.Logging.Configuration.dll
F:\_Work\_PersonelWorks\Playvoi\Playvoi.Server\Playvoi.Server\Playvoi.Server\bin\Release\net9.0\Microsoft.Extensions.Logging.Console.dll
F:\_Work\_PersonelWorks\Playvoi\Playvoi.Server\Playvoi.Server\Playvoi.Server\bin\Release\net9.0\Microsoft.Extensions.Options.dll
F:\_Work\_PersonelWorks\Playvoi\Playvoi.Server\Playvoi.Server\Playvoi.Server\bin\Release\net9.0\Microsoft.Extensions.Options.ConfigurationExtensions.dll
F:\_Work\_PersonelWorks\Playvoi\Playvoi.Server\Playvoi.Server\Playvoi.Server\bin\Release\net9.0\Microsoft.Extensions.Primitives.dll
F:\_Work\_PersonelWorks\Playvoi\Playvoi.Server\Playvoi.Server\Playvoi.Server\bin\Release\net9.0\System.Diagnostics.DiagnosticSource.dll
F:\_Work\_PersonelWorks\Playvoi\Playvoi.Server\Playvoi.Server\Playvoi.Server\bin\Release\net9.0\System.IO.Pipelines.dll
F:\_Work\_PersonelWorks\Playvoi\Playvoi.Server\Playvoi.Server\Playvoi.Server\bin\Release\net9.0\System.Text.Encodings.Web.dll
F:\_Work\_PersonelWorks\Playvoi\Playvoi.Server\Playvoi.Server\Playvoi.Server\bin\Release\net9.0\System.Text.Json.dll
F:\_Work\_PersonelWorks\Playvoi\Playvoi.Server\Playvoi.Server\Playvoi.Server\bin\Release\net9.0\runtimes\browser\lib\net8.0\System.Text.Encodings.Web.dll
F:\_Work\_PersonelWorks\Playvoi\Playvoi.Server\Playvoi.Server\Playvoi.Server\bin\Release\net9.0\runtimes\win\lib\net9.0\System.Text.Encodings.Web.dll

View file

@ -1 +1 @@
17686688556326061 17686688558338110