You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

48 lines
1.7 KiB

  1. using JT1078.Gateway.Abstractions;
  2. using JT1078.Gateway.Sessions;
  3. using JT1078.Hls;
  4. using Microsoft.Extensions.Hosting;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading;
  10. using System.Threading.Tasks;
  11. namespace JT1078.Gateway.TestNormalHosting.Services
  12. {
  13. public class JT1078HlsNormalMsgHostedService : BackgroundService
  14. {
  15. private IJT1078PackageConsumer PackageConsumer;
  16. private JT1078HttpSessionManager HttpSessionManager;
  17. private M3U8FileManage M3U8FileManage;
  18. public JT1078HlsNormalMsgHostedService(
  19. M3U8FileManage M3U8FileManage,
  20. JT1078HttpSessionManager httpSessionManager,
  21. IJT1078PackageConsumer packageConsumer)
  22. {
  23. PackageConsumer = packageConsumer;
  24. HttpSessionManager = httpSessionManager;
  25. this.M3U8FileManage = M3U8FileManage;
  26. }
  27. protected override Task ExecuteAsync(CancellationToken stoppingToken)
  28. {
  29. PackageConsumer.OnMessage((Message) =>
  30. {
  31. var merge = JT1078.Protocol.JT1078Serializer.Merge(Message.Data);
  32. if (merge != null)
  33. {
  34. var hasHttpSessionn = HttpSessionManager.GetAllHttpContextBySimAndChannelNo(merge.SIM, merge.LogicChannelNumber);
  35. if (hasHttpSessionn.Count>0)
  36. {
  37. M3U8FileManage.CreateTsData(merge);
  38. }
  39. else {
  40. M3U8FileManage.Clear(merge.SIM, merge.LogicChannelNumber);
  41. }
  42. }
  43. });
  44. return Task.CompletedTask;
  45. }
  46. }
  47. }