Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.
 
 
 

78 Zeilen
2.6 KiB

  1. using JT808.DotNetty.Dtos;
  2. using JT808.DotNetty.Interfaces;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Runtime.CompilerServices;
  8. using Microsoft.Extensions.Options;
  9. using JT808.DotNetty.Configurations;
  10. namespace JT808.DotNetty.Internal
  11. {
  12. internal class JT808SessionServiceDefaultImpl : IJT808SessionService
  13. {
  14. private readonly JT808SessionManager jT808SessionManager;
  15. public JT808SessionServiceDefaultImpl(
  16. JT808SessionManager jT808SessionManager)
  17. {
  18. this.jT808SessionManager = jT808SessionManager;
  19. }
  20. public JT808ResultDto<List<JT808SessionInfoDto>> GetAll()
  21. {
  22. JT808ResultDto<List<JT808SessionInfoDto>> resultDto = new JT808ResultDto<List<JT808SessionInfoDto>>();
  23. try
  24. {
  25. resultDto.Data = jT808SessionManager.GetAll().Select(s => new JT808SessionInfoDto
  26. {
  27. LastActiveTime = s.LastActiveTime,
  28. StartTime = s.StartTime,
  29. TerminalPhoneNo = s.TerminalPhoneNo,
  30. RemoteAddressIP = s.Channel.RemoteAddress.ToString(),
  31. }).ToList();
  32. resultDto.Code = JT808ResultCode.Ok;
  33. }
  34. catch (Exception ex)
  35. {
  36. resultDto.Data = null;
  37. resultDto.Code = JT808ResultCode.Error;
  38. resultDto.Message = Newtonsoft.Json.JsonConvert.SerializeObject(ex);
  39. }
  40. return resultDto;
  41. }
  42. public JT808ResultDto<bool> RemoveByTerminalPhoneNo(string terminalPhoneNo)
  43. {
  44. JT808ResultDto<bool> resultDto = new JT808ResultDto<bool>();
  45. try
  46. {
  47. var session = jT808SessionManager.RemoveSession(terminalPhoneNo);
  48. if (session != null)
  49. {
  50. if(session.Channel.Open)
  51. {
  52. session.Channel.CloseAsync();
  53. }
  54. }
  55. resultDto.Code = JT808ResultCode.Ok;
  56. resultDto.Data = true;
  57. }
  58. catch (AggregateException ex)
  59. {
  60. resultDto.Data = false;
  61. resultDto.Code = 500;
  62. resultDto.Message = Newtonsoft.Json.JsonConvert.SerializeObject(ex);
  63. }
  64. catch (Exception ex)
  65. {
  66. resultDto.Data = false;
  67. resultDto.Code = JT808ResultCode.Error;
  68. resultDto.Message = Newtonsoft.Json.JsonConvert.SerializeObject(ex);
  69. }
  70. return resultDto;
  71. }
  72. }
  73. }