Init
This commit is contained in:
53
Client/Program.cs
Normal file
53
Client/Program.cs
Normal file
@@ -0,0 +1,53 @@
|
||||
using System;
|
||||
using System.Net.Http;
|
||||
using System.Text.Json;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Client;
|
||||
using Domain;
|
||||
using Domain.Dto;
|
||||
using MessagePack;
|
||||
|
||||
if (args.Length < 2)
|
||||
{
|
||||
System.Console.WriteLine("Pass two args: http/tcp and json/bin");
|
||||
return -1;
|
||||
}
|
||||
|
||||
var protocol = args[0];
|
||||
var serialization = args[1];
|
||||
IClient? client = protocol == "http" ? new HttpClientWrapper(serialization == "json" ? ConvertJsonResponse : ConvertMessagePackResponse) : null;
|
||||
|
||||
client?.Start();
|
||||
System.Console.WriteLine("Client started:");
|
||||
System.Console.WriteLine(client);
|
||||
|
||||
// Обработка выхода по Ctrl+C
|
||||
Console.CancelKeyPress += (sender, e) =>
|
||||
{
|
||||
e.Cancel = true; // Prevent immediate termination
|
||||
Console.WriteLine("Shutdown signal received. Stopping client...");
|
||||
client?.Stop();
|
||||
Console.WriteLine("Goodbye!");
|
||||
Environment.Exit(0);
|
||||
};
|
||||
|
||||
// Бесконечный цикл ожидания
|
||||
while (true)
|
||||
{
|
||||
Thread.Sleep(1000);
|
||||
}
|
||||
|
||||
static async Task<Data?> ConvertJsonResponse(HttpResponseMessage response)
|
||||
{
|
||||
var json = await response.Content.ReadAsStringAsync();
|
||||
var jsonData = JsonSerializer.Deserialize<JsonData>(json);
|
||||
return jsonData?.ToData();
|
||||
}
|
||||
|
||||
static async Task<Data?> ConvertMessagePackResponse(HttpResponseMessage response)
|
||||
{
|
||||
var bytes = await response.Content.ReadAsByteArrayAsync();
|
||||
var msgPackData = MessagePackSerializer.Deserialize<MessagePackData>(bytes);
|
||||
return msgPackData?.ToData();
|
||||
}
|
||||
Reference in New Issue
Block a user