Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

62 строки
2.2 KiB

  1. using DotNetty.Buffers;
  2. using DotNetty.Transport.Channels;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.IO;
  6. using System.Text;
  7. using DotNetty.Common.Utilities;
  8. using Microsoft.Extensions.Logging;
  9. using Newtonsoft.Json;
  10. using System.Threading;
  11. using JT809Netty.Core.ServiceHandlers;
  12. using JT809.Protocol;
  13. using JT809.Protocol.JT809Exceptions;
  14. namespace JT809Netty.Core.Handlers
  15. {
  16. /// <summary>
  17. /// 下级平台主链路
  18. /// </summary>
  19. public class JT809DownMasterLinkServiceHandler : ChannelHandlerAdapter
  20. {
  21. private readonly ILogger<JT809DownMasterLinkServiceHandler> logger;
  22. private readonly JT809DownMasterLinkBusinessTypeHandler jT809DownMasterLinkBusinessTypeHandler;
  23. public JT809DownMasterLinkServiceHandler(
  24. JT809DownMasterLinkBusinessTypeHandler jT809DownMasterLinkBusinessTypeHandler,
  25. ILoggerFactory loggerFactory)
  26. {
  27. this.jT809DownMasterLinkBusinessTypeHandler = jT809DownMasterLinkBusinessTypeHandler;
  28. logger = loggerFactory.CreateLogger<JT809DownMasterLinkServiceHandler>();
  29. }
  30. public override void ChannelRead(IChannelHandlerContext context, object message)
  31. {
  32. var jT809Package = (JT809Package)message;
  33. string receive = string.Empty;
  34. try
  35. {
  36. if (logger.IsEnabled(LogLevel.Debug))
  37. logger.LogDebug(JsonConvert.SerializeObject(jT809Package));
  38. if (jT809DownMasterLinkBusinessTypeHandler.ResponseHandlerDict.TryGetValue(jT809Package.Header.BusinessType,out var action))
  39. {
  40. action(jT809Package, context);
  41. }
  42. }
  43. catch (JT809Exception ex)
  44. {
  45. if (logger.IsEnabled(LogLevel.Error))
  46. logger.LogError(ex, "JT809Exception receive<<<" + receive);
  47. }
  48. catch (Exception ex)
  49. {
  50. if (logger.IsEnabled(LogLevel.Error))
  51. logger.LogError(ex, "Exception receive<<<" + receive);
  52. }
  53. }
  54. public override void ChannelReadComplete(IChannelHandlerContext context) => context.Flush();
  55. }
  56. }