using DotNetty.Buffers; using DotNetty.Transport.Bootstrapping; using DotNetty.Transport.Channels; using DotNetty.Transport.Channels.Sockets; using System; using System.Collections.Generic; using System.Net; using System.Text; using System.Threading.Tasks; using DotNetty.Handlers.Logging; using Polly; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using JT808.DotNetty.Transmit.Configs; using System.Linq; using JT808.DotNetty.Transmit.Handlers; using JT808.DotNetty.Abstractions; using JT808.Protocol; using JT808.Protocol.Interfaces; using Microsoft.Extensions.Hosting; using System.Threading; namespace JT808.DotNetty.Transmit { public class JT808DotNettyTransmitHostedService:IHostedService { private readonly JT808DotNettyTransmitService jT808DotNettyTransmitService; private readonly IJT808MsgConsumer jT808MsgConsumer; public JT808DotNettyTransmitHostedService( IJT808MsgConsumer jT808MsgConsumer, JT808DotNettyTransmitService jT808DotNettyTransmitService) { this.jT808DotNettyTransmitService = jT808DotNettyTransmitService; this.jT808MsgConsumer = jT808MsgConsumer; } public Task StartAsync(CancellationToken cancellationToken) { jT808MsgConsumer.Subscribe(); jT808MsgConsumer.OnMessage(item=> { jT808DotNettyTransmitService.SendAsync(item.TerminalNo,item.Data); }); return Task.CompletedTask; } public Task StopAsync(CancellationToken cancellationToken) { jT808MsgConsumer.Unsubscribe(); return Task.CompletedTask; } } }