using JT808.Gateway.PubSub; using JT808.Gateway.Session; using Microsoft.Extensions.Hosting; using System; using System.Collections.Generic; using System.Text; using System.Threading; using System.Threading.Tasks; namespace JT808.Gateway.Services { internal class JT808MsgReplyHostedService : IHostedService { private readonly JT808SessionManager JT808SessionManager; private readonly IJT808MsgReplyConsumer JT808MsgReplyConsumer; public JT808MsgReplyHostedService( IJT808MsgReplyConsumer jT808MsgReplyConsumer, JT808SessionManager jT808SessionManager) { JT808MsgReplyConsumer = jT808MsgReplyConsumer; JT808SessionManager = jT808SessionManager; } public Task StartAsync(CancellationToken cancellationToken) { JT808MsgReplyConsumer.OnMessage(item => { JT808SessionManager.Send(item.TerminalNo, item.Data); }); JT808MsgReplyConsumer.Subscribe(); return Task.CompletedTask; } public Task StopAsync(CancellationToken cancellationToken) { JT808MsgReplyConsumer.Unsubscribe(); return Task.CompletedTask; } } }