您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 

53 行
1.7 KiB

  1. using DotNetty.Buffers;
  2. using DotNetty.Transport.Bootstrapping;
  3. using DotNetty.Transport.Channels;
  4. using DotNetty.Transport.Channels.Sockets;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Net;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. using DotNetty.Handlers.Logging;
  11. using Polly;
  12. using Microsoft.Extensions.Logging;
  13. using Microsoft.Extensions.Options;
  14. using JT808.DotNetty.Transmit.Configs;
  15. using System.Linq;
  16. using JT808.DotNetty.Transmit.Handlers;
  17. using JT808.DotNetty.Abstractions;
  18. using JT808.Protocol;
  19. using JT808.Protocol.Interfaces;
  20. using Microsoft.Extensions.Hosting;
  21. using System.Threading;
  22. namespace JT808.DotNetty.Transmit
  23. {
  24. public class JT808DotNettyTransmitHostedService:IHostedService
  25. {
  26. private readonly JT808DotNettyTransmitService jT808DotNettyTransmitService;
  27. private readonly IJT808MsgConsumer jT808MsgConsumer;
  28. public JT808DotNettyTransmitHostedService(
  29. IJT808MsgConsumer jT808MsgConsumer,
  30. JT808DotNettyTransmitService jT808DotNettyTransmitService)
  31. {
  32. this.jT808DotNettyTransmitService = jT808DotNettyTransmitService;
  33. this.jT808MsgConsumer = jT808MsgConsumer;
  34. }
  35. public Task StartAsync(CancellationToken cancellationToken)
  36. {
  37. jT808MsgConsumer.Subscribe();
  38. jT808MsgConsumer.OnMessage(item=> {
  39. jT808DotNettyTransmitService.SendAsync(item.TerminalNo,item.Data);
  40. });
  41. return Task.CompletedTask;
  42. }
  43. public Task StopAsync(CancellationToken cancellationToken)
  44. {
  45. jT808MsgConsumer.Unsubscribe();
  46. return Task.CompletedTask;
  47. }
  48. }
  49. }