Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.
 
 
 

43 wiersze
1.2 KiB

  1. using JT808.Gateway.PubSub;
  2. using JT808.Gateway.Session;
  3. using Microsoft.Extensions.Hosting;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Text;
  7. using System.Threading;
  8. using System.Threading.Tasks;
  9. namespace JT808.Gateway.Services
  10. {
  11. internal class JT808MsgReplyHostedService : IHostedService
  12. {
  13. private readonly JT808SessionManager JT808SessionManager;
  14. private readonly IJT808MsgReplyConsumer JT808MsgReplyConsumer;
  15. public JT808MsgReplyHostedService(
  16. IJT808MsgReplyConsumer jT808MsgReplyConsumer,
  17. JT808SessionManager jT808SessionManager)
  18. {
  19. JT808MsgReplyConsumer = jT808MsgReplyConsumer;
  20. JT808SessionManager = jT808SessionManager;
  21. }
  22. public Task StartAsync(CancellationToken cancellationToken)
  23. {
  24. JT808MsgReplyConsumer.OnMessage(item =>
  25. {
  26. JT808SessionManager.Send(item.TerminalNo, item.Data);
  27. });
  28. JT808MsgReplyConsumer.Subscribe();
  29. return Task.CompletedTask;
  30. }
  31. public Task StopAsync(CancellationToken cancellationToken)
  32. {
  33. JT808MsgReplyConsumer.Unsubscribe();
  34. return Task.CompletedTask;
  35. }
  36. }
  37. }