using System.Threading.Tasks; using Microsoft.Extensions.Hosting; using System.Threading; using JT808.Protocol.Extensions; using JT808.Gateway.Abstractions; namespace JT808.Gateway.Traffic { public class JT808TrafficServiceHostedService : IHostedService { private readonly IJT808MsgConsumer jT808MsgConsumer; private readonly JT808TrafficService jT808TrafficService; public JT808TrafficServiceHostedService( JT808TrafficService jT808TrafficService, IJT808MsgConsumer jT808MsgConsumer) { this.jT808MsgConsumer = jT808MsgConsumer; this.jT808TrafficService = jT808TrafficService; } public Task StartAsync(CancellationToken cancellationToken) { jT808MsgConsumer.Subscribe(); jT808MsgConsumer.OnMessage((item)=> { string str = item.Data.ToHexString(); jT808TrafficService.Processor(item.TerminalNo, item.Data.Length); }); return Task.CompletedTask; } public Task StopAsync(CancellationToken cancellationToken) { jT808MsgConsumer.Unsubscribe(); return Task.CompletedTask; } } }