HubRegister.cs 1.1 KB

12345678910111213141516171819202122232425262728
  1. using Microsoft.AspNetCore.Hosting.Server;
  2. using Microsoft.AspNetCore.Hosting.Server.Features;
  3. using Microsoft.AspNetCore.Http.Features;
  4. using Microsoft.Extensions.DependencyInjection;
  5. using Microsoft.Extensions.Logging;
  6. namespace CompServ.Worker;
  7. internal class HubRegister(IServiceProvider serviceProvider, ILogger<HubRegister> logger)
  8. {
  9. private int _listeningPort;
  10. public async Task Register()
  11. {
  12. var svr = serviceProvider.GetRequiredService<IServer>();
  13. var saf = svr.Features.GetRequiredFeature<IServerAddressesFeature>();
  14. _listeningPort = new Uri(saf.Addresses.First()).Port;
  15. logger.LogInformation($"Register to hub <{StatusHolder.HubServer}> with port <{_listeningPort}> and ratio <{StatusHolder.Ratio}>");
  16. await new ClientLibrary.CompServHubClient(StatusHolder.HubServer!).RegisterWorker(_listeningPort, StatusHolder.Ratio);
  17. }
  18. public async Task UnRegister()
  19. {
  20. logger.LogInformation($"UnRegister to hub <{StatusHolder.HubServer}> with port <{_listeningPort}>");
  21. await new ClientLibrary.CompServHubClient(StatusHolder.HubServer!).UnRegisterWorker(_listeningPort);
  22. }
  23. }