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.
 
 
 

39 lines
1.2 KiB

  1. using System.Threading.Tasks;
  2. using Microsoft.Extensions.Hosting;
  3. using System.Threading;
  4. using JT808.Protocol.Extensions;
  5. using JT808.Gateway.Abstractions;
  6. namespace JT808.Gateway.Traffic
  7. {
  8. public class JT808TrafficServiceHostedService : IHostedService
  9. {
  10. private readonly IJT808MsgConsumer jT808MsgConsumer;
  11. private readonly JT808TrafficService jT808TrafficService;
  12. public JT808TrafficServiceHostedService(
  13. JT808TrafficService jT808TrafficService,
  14. IJT808MsgConsumer jT808MsgConsumer)
  15. {
  16. this.jT808MsgConsumer = jT808MsgConsumer;
  17. this.jT808TrafficService = jT808TrafficService;
  18. }
  19. public Task StartAsync(CancellationToken cancellationToken)
  20. {
  21. jT808MsgConsumer.Subscribe();
  22. jT808MsgConsumer.OnMessage((item)=> {
  23. string str = item.Data.ToHexString();
  24. jT808TrafficService.Processor(item.TerminalNo, item.Data.Length);
  25. });
  26. return Task.CompletedTask;
  27. }
  28. public Task StopAsync(CancellationToken cancellationToken)
  29. {
  30. jT808MsgConsumer.Unsubscribe();
  31. return Task.CompletedTask;
  32. }
  33. }
  34. }