mirror of
https://github.com/Stone-Red-Code/HyperbolicDownloader.git
synced 2026-09-06 15:56:22 +02:00
Upgrade project to .NET 8
This commit is contained in:
@@ -2,14 +2,8 @@
|
||||
|
||||
namespace HyperbolicDownloaderApi.Networking;
|
||||
|
||||
internal class BroadcastRecivedEventArgs : EventArgs
|
||||
internal class BroadcastRecivedEventArgs(IPEndPoint ipEndPoint, string message) : EventArgs
|
||||
{
|
||||
public BroadcastRecivedEventArgs(IPEndPoint iPEndPoint, string message)
|
||||
{
|
||||
IPEndPoint = iPEndPoint;
|
||||
Message = message;
|
||||
}
|
||||
|
||||
public IPEndPoint IPEndPoint { get; }
|
||||
public string Message { get; }
|
||||
public IPEndPoint IPEndPoint { get; } = ipEndPoint;
|
||||
public string Message { get; } = message;
|
||||
}
|
||||
@@ -1,13 +1,7 @@
|
||||
namespace HyperbolicDownloaderApi.Networking;
|
||||
|
||||
internal class DataContainer
|
||||
internal class DataContainer(string eventName, string jsonData)
|
||||
{
|
||||
public string EventName { get; set; }
|
||||
public string JsonData { get; set; }
|
||||
|
||||
public DataContainer(string eventName, string jsonData)
|
||||
{
|
||||
JsonData = jsonData;
|
||||
EventName = eventName;
|
||||
}
|
||||
public string EventName { get; set; } = eventName;
|
||||
public string JsonData { get; set; } = jsonData;
|
||||
}
|
||||
@@ -8,7 +8,7 @@ namespace HyperbolicDownloaderApi.Networking;
|
||||
|
||||
public class HostsManager
|
||||
{
|
||||
private List<NetworkSocket> hosts = new List<NetworkSocket>();
|
||||
private List<NetworkSocket> hosts = [];
|
||||
public int Count => hosts.Count;
|
||||
|
||||
public int AddRange(IEnumerable<NetworkSocket> hosts)
|
||||
@@ -48,7 +48,7 @@ public class HostsManager
|
||||
|
||||
public int CheckHostsActivity()
|
||||
{
|
||||
List<NetworkSocket> hostsToRemove = new List<NetworkSocket>();
|
||||
List<NetworkSocket> hostsToRemove = [];
|
||||
int activeHostsCount = 0;
|
||||
foreach (NetworkSocket host in hosts)
|
||||
{
|
||||
@@ -113,7 +113,7 @@ public class HostsManager
|
||||
Console.CursorLeft = 0;
|
||||
if (sendTask.IsCompletedSuccessfully)
|
||||
{
|
||||
int newHosts = AddRange(sendTask.Result ?? new());
|
||||
int newHosts = AddRange(sendTask.Result ?? []);
|
||||
newHostsCount += newHosts;
|
||||
|
||||
if (newHosts > 0)
|
||||
@@ -145,15 +145,14 @@ public class HostsManager
|
||||
|
||||
public List<NetworkSocket> ToList()
|
||||
{
|
||||
return hosts.ToList();
|
||||
return [.. hosts];
|
||||
}
|
||||
|
||||
public void SaveHosts()
|
||||
{
|
||||
hosts = hosts
|
||||
.OrderByDescending(s => s.DownloadSpeed)
|
||||
.ThenByDescending(s => s.LastActive)
|
||||
.ToList();
|
||||
hosts = [.. hosts
|
||||
.OrderByDescending(s => s.DownloadSpeed)
|
||||
.ThenByDescending(s => s.LastActive)];
|
||||
File.WriteAllText(ApiConfiguration.HostsFilePath, JsonSerializer.Serialize(hosts));
|
||||
}
|
||||
}
|
||||
@@ -5,20 +5,11 @@ using System.Text.Json;
|
||||
|
||||
namespace HyperbolicDownloaderApi.Networking;
|
||||
|
||||
internal class MessageRecivedEventArgs<T> : EventArgs
|
||||
internal class MessageRecivedEventArgs<T>(NetworkStream networkStream, IPAddress ipAddress, T data) : EventArgs
|
||||
{
|
||||
private readonly NetworkStream networkStream;
|
||||
public T Data { get; set; } = data;
|
||||
|
||||
public MessageRecivedEventArgs(NetworkStream networkStream, IPAddress ipAddress, T data)
|
||||
{
|
||||
this.networkStream = networkStream;
|
||||
Data = data;
|
||||
IpAddress = ipAddress;
|
||||
}
|
||||
|
||||
public T Data { get; set; }
|
||||
|
||||
public IPAddress IpAddress { get; set; }
|
||||
public IPAddress IpAddress { get; set; } = ipAddress;
|
||||
|
||||
public async Task SendResponseAsync(object response)
|
||||
{
|
||||
|
||||
@@ -9,24 +9,15 @@ using System.Text.Json;
|
||||
|
||||
namespace HyperbolicDownloaderApi.Networking;
|
||||
|
||||
internal class NetworkClient
|
||||
internal class NetworkClient(FilesManager filesManager)
|
||||
{
|
||||
private readonly FilesManager filesManager;
|
||||
private readonly Dictionary<string, (Type type, Delegate method)> events = new();
|
||||
private readonly Dictionary<string, (Type type, Delegate method)> events = [];
|
||||
private TcpListener? tcpListener;
|
||||
public bool IsListening { get; private set; } = false;
|
||||
|
||||
public NetworkClient(FilesManager filesManager)
|
||||
{
|
||||
this.filesManager = filesManager;
|
||||
}
|
||||
|
||||
public static async Task<T?> SendAsync<T>(IPAddress remoteIp, int remotePort, string eventName, object data)
|
||||
{
|
||||
if (remoteIp is null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(remoteIp));
|
||||
}
|
||||
ArgumentNullException.ThrowIfNull(remoteIp);
|
||||
|
||||
TcpClient client = new TcpClient();
|
||||
|
||||
@@ -57,10 +48,7 @@ internal class NetworkClient
|
||||
|
||||
public static async Task SendAsync(IPAddress remoteIp, int remotePort, string eventName, object data)
|
||||
{
|
||||
if (remoteIp is null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(remoteIp));
|
||||
}
|
||||
ArgumentNullException.ThrowIfNull(remoteIp);
|
||||
|
||||
TcpClient client = new TcpClient();
|
||||
|
||||
@@ -125,9 +113,9 @@ internal class NetworkClient
|
||||
|
||||
DataContainer? dataContainer = JsonSerializer.Deserialize<DataContainer>(dataReceived);
|
||||
|
||||
if (dataContainer is not null && events.ContainsKey(dataContainer.EventName))
|
||||
if (dataContainer is not null && events.TryGetValue(dataContainer.EventName, out (Type type, Delegate method) value))
|
||||
{
|
||||
(Type type, Delegate method) = events[dataContainer.EventName];
|
||||
(Type type, Delegate method) = value;
|
||||
|
||||
Type eventArgsType = typeof(MessageRecivedEventArgs<>).MakeGenericType(type);
|
||||
|
||||
|
||||
@@ -1,20 +1,13 @@
|
||||
namespace HyperbolicDownloaderApi.Networking;
|
||||
|
||||
public class NetworkSocket
|
||||
public class NetworkSocket(string ipAddress, int port, DateTime lastActive)
|
||||
{
|
||||
public string IPAddress { get; set; }
|
||||
public int Port { get; set; }
|
||||
public DateTime LastActive { get; set; }
|
||||
public string IPAddress { get; set; } = ipAddress;
|
||||
public int Port { get; set; } = port;
|
||||
public DateTime LastActive { get; set; } = lastActive;
|
||||
|
||||
public long DownloadSpeed { get; set; }
|
||||
|
||||
public NetworkSocket(string ipAddress, int port, DateTime lastActive)
|
||||
{
|
||||
IPAddress = ipAddress;
|
||||
Port = port;
|
||||
LastActive = lastActive;
|
||||
}
|
||||
|
||||
public override bool Equals(object? obj)
|
||||
{
|
||||
if (obj is not NetworkSocket networkSocket)
|
||||
|
||||
Reference in New Issue
Block a user