Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.
 
 
 

103 рядки
4.4 KiB

  1. using JT808.Gateway.Interfaces;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Text;
  5. using JT808.Gateway.Enums;
  6. using JT808.Gateway.GrpcService;
  7. using Grpc.Core;
  8. using System.Threading.Tasks;
  9. namespace JT808.Gateway.Services
  10. {
  11. public class JT808GatewayService: JT808Gateway.JT808GatewayBase
  12. {
  13. private readonly JT808AtomicCounterService jT808TcpAtomicCounterService;
  14. private readonly JT808AtomicCounterService jT808UdpAtomicCounterService;
  15. private readonly IJT808SessionService jT808SessionService;
  16. private readonly IJT808UnificationSendService jT808UnificationSendService;
  17. public JT808GatewayService(
  18. IJT808UnificationSendService jT808UnificationSendService,
  19. IJT808SessionService jT808SessionService,
  20. JT808AtomicCounterServiceFactory jT808AtomicCounterServiceFactory
  21. )
  22. {
  23. this.jT808UnificationSendService = jT808UnificationSendService;
  24. this.jT808SessionService = jT808SessionService;
  25. this.jT808TcpAtomicCounterService = jT808AtomicCounterServiceFactory.Create(JT808TransportProtocolType.tcp);
  26. this.jT808UdpAtomicCounterService = jT808AtomicCounterServiceFactory.Create(JT808TransportProtocolType.udp);
  27. }
  28. public override Task<TcpSessionInfoReply> GetTcpSessionAll(Empty request, ServerCallContext context)
  29. {
  30. var result = jT808SessionService.GetTcpAll();
  31. TcpSessionInfoReply reply = new TcpSessionInfoReply();
  32. if (result.Data != null)
  33. {
  34. foreach (var item in result.Data)
  35. {
  36. reply.TcpSessions.Add(new SessionInfo
  37. {
  38. LastActiveTime = item.LastActiveTime.ToString("yyyy-MM-dd HH:mm:ss"),
  39. StartTime = item.StartTime.ToString("yyyy-MM-dd HH:mm:ss"),
  40. RemoteAddressIP = item.RemoteAddressIP,
  41. TerminalPhoneNo = item.TerminalPhoneNo
  42. });
  43. }
  44. }
  45. return Task.FromResult(reply);
  46. }
  47. public override Task<SessionRemoveReply> RemoveSessionByTerminalPhoneNo(SessionRemoveRequest request, ServerCallContext context)
  48. {
  49. var result = jT808SessionService.RemoveByTerminalPhoneNo(request.TerminalPhoneNo);
  50. return Task.FromResult(new SessionRemoveReply { Success = result.Data });
  51. }
  52. public override Task<UdpSessionInfoReply> GetUdpSessionAll(Empty request, ServerCallContext context)
  53. {
  54. var result = jT808SessionService.GetUdpAll();
  55. UdpSessionInfoReply reply = new UdpSessionInfoReply();
  56. if (result.Data != null)
  57. {
  58. foreach (var item in result.Data)
  59. {
  60. reply.UdpSessions.Add(new SessionInfo
  61. {
  62. LastActiveTime = item.LastActiveTime.ToString("yyyy-MM-dd HH:mm:ss"),
  63. StartTime = item.StartTime.ToString("yyyy-MM-dd HH:mm:ss"),
  64. RemoteAddressIP = item.RemoteAddressIP,
  65. TerminalPhoneNo = item.TerminalPhoneNo
  66. });
  67. }
  68. }
  69. return Task.FromResult(reply);
  70. }
  71. public override Task<UnificationSendReply> UnificationSend(UnificationSendRequest request, ServerCallContext context)
  72. {
  73. var result = jT808UnificationSendService.Send(request.TerminalPhoneNo, request.Data.ToByteArray());
  74. return Task.FromResult(new UnificationSendReply { Success = result.Data });
  75. }
  76. public override Task<TcpAtomicCounterReply> GetTcpAtomicCounter(Empty request, ServerCallContext context)
  77. {
  78. TcpAtomicCounterReply reply = new TcpAtomicCounterReply();
  79. reply.MsgFailCount=jT808TcpAtomicCounterService.MsgFailCount;
  80. reply.MsgSuccessCount=jT808TcpAtomicCounterService.MsgSuccessCount;
  81. return Task.FromResult(reply);
  82. }
  83. public override Task<UdpAtomicCounterReply> GetUdpAtomicCounter(Empty request, ServerCallContext context)
  84. {
  85. UdpAtomicCounterReply reply = new UdpAtomicCounterReply();
  86. reply.MsgFailCount = jT808UdpAtomicCounterService.MsgFailCount;
  87. reply.MsgSuccessCount = jT808UdpAtomicCounterService.MsgSuccessCount;
  88. return Task.FromResult(reply);
  89. }
  90. }
  91. }