using Microsoft.AspNetCore.Hosting.Server; using Microsoft.AspNetCore.Hosting.Server.Features; using Microsoft.AspNetCore.Http.Features; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; namespace CompServ.Worker; internal class HubRegister(IServiceProvider serviceProvider, ILogger logger) { private int _listeningPort; public async Task Register() { var svr = serviceProvider.GetRequiredService(); var saf = svr.Features.GetRequiredFeature(); _listeningPort = new Uri(saf.Addresses.First()).Port; logger.LogInformation($"Register to hub <{StatusHolder.HubServer}> with port <{_listeningPort}> and ratio <{StatusHolder.Ratio}>"); await new ClientLibrary.CompServHubClient(StatusHolder.HubServer!).RegisterWorker(_listeningPort, StatusHolder.Ratio); } public async Task UnRegister() { logger.LogInformation($"UnRegister to hub <{StatusHolder.HubServer}> with port <{_listeningPort}>"); await new ClientLibrary.CompServHubClient(StatusHolder.HubServer!).UnRegisterWorker(_listeningPort); } }