您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 

120 行
5.8 KiB

  1. using JT808.Gateway.Abstractions;
  2. using JT808.Gateway.Authorization;
  3. using JT808.Gateway.Abstractions.Configurations;
  4. using JT808.Gateway.Handlers;
  5. using JT808.Gateway.Internal;
  6. using JT808.Gateway.Services;
  7. using JT808.Gateway.Session;
  8. using JT808.Protocol;
  9. using Microsoft.Extensions.Configuration;
  10. using Microsoft.Extensions.DependencyInjection;
  11. using Microsoft.Extensions.DependencyInjection.Extensions;
  12. using System;
  13. using System.Runtime.CompilerServices;
  14. [assembly: InternalsVisibleTo("JT808.Gateway.TestHosting")]
  15. [assembly: InternalsVisibleTo("JT808.Gateway.Test")]
  16. namespace JT808.Gateway
  17. {
  18. public static partial class JT808GatewayExtensions
  19. {
  20. //public static IJT808QueueGatewayBuilder AddQueueGateway(this IJT808Builder jT808Builder, Action<JT808Configuration> config)
  21. //{
  22. // IJT808QueueGatewayBuilder server = new JT808QueueGatewayBuilderDefault(jT808Builder);
  23. // server.JT808Builder.Services.Configure(config);
  24. // server.AddJT808Core();
  25. // server.JT808Builder.Services.AddHostedService<JT808MsgReplyHostedService>();
  26. // return server;
  27. //}
  28. //public static IJT808NormalGatewayBuilder AddNormalGateway(this IJT808Builder jT808Builder, Action<JT808Configuration> config)
  29. //{
  30. // IJT808NormalGatewayBuilder server = new JT808NormalGatewayBuilderDefault(jT808Builder);
  31. // server.JT808Builder.Services.AddSingleton<JT808NormalReplyMessageHandler>();
  32. // server.JT808Builder.Services.Configure(config);
  33. // server.AddJT808Core();
  34. // return server;
  35. //}
  36. //public static IJT808QueueGatewayBuilder AddQueueGateway(this IJT808Builder jT808Builder, IConfiguration configuration)
  37. //{
  38. // IJT808QueueGatewayBuilder server = new JT808QueueGatewayBuilderDefault(jT808Builder);
  39. // server.JT808Builder.Services.Configure<JT808Configuration>(configuration.GetSection("JT808Configuration"));
  40. // server.AddJT808Core();
  41. // server.JT808Builder.Services.AddHostedService<JT808MsgReplyHostedService>();
  42. // return server;
  43. //}
  44. //public static IJT808NormalGatewayBuilder AddNormalGateway(this IJT808Builder jT808Builder, IConfiguration configuration)
  45. //{
  46. // IJT808NormalGatewayBuilder server = new JT808NormalGatewayBuilderDefault(jT808Builder);
  47. // server.JT808Builder.Services.AddSingleton<JT808NormalReplyMessageHandler>();
  48. // server.JT808Builder.Services.Configure<JT808Configuration>(configuration.GetSection("JT808Configuration"));
  49. // server.AddJT808Core();
  50. // return server;
  51. //}
  52. public static IJT808GatewayBuilder AddGateway(this IJT808Builder jT808Builder, Action<JT808Configuration> config)
  53. {
  54. JT808GatewayBuilderDefault jT808GatewayBuilderDefault = new JT808GatewayBuilderDefault(jT808Builder);
  55. jT808GatewayBuilderDefault.JT808Builder.Services.Configure(config);
  56. jT808GatewayBuilderDefault.AddJT808Core();
  57. return jT808GatewayBuilderDefault;
  58. }
  59. public static IJT808GatewayBuilder AddGateway(this IJT808Builder jT808Builder, IConfiguration configuration)
  60. {
  61. JT808GatewayBuilderDefault jT808GatewayBuilderDefault = new JT808GatewayBuilderDefault(jT808Builder);
  62. jT808GatewayBuilderDefault.JT808Builder.Services.Configure<JT808Configuration>(configuration.GetSection("JT808Configuration"));
  63. jT808GatewayBuilderDefault.AddJT808Core();
  64. return jT808GatewayBuilderDefault;
  65. }
  66. public static IJT808GatewayBuilder ReplaceMessageHandler<TJT808MessageHandler>(this IJT808GatewayBuilder config)
  67. where TJT808MessageHandler : JT808MessageHandler
  68. {
  69. config.JT808Builder.Services.Replace(new ServiceDescriptor(typeof(JT808MessageHandler), typeof(TJT808MessageHandler), ServiceLifetime.Singleton));
  70. return config;
  71. }
  72. public static IJT808GatewayBuilder AddTcp(this IJT808GatewayBuilder config)
  73. {
  74. config.JT808Builder.Services.AddHostedService<JT808TcpServer>();
  75. config.JT808Builder.Services.AddHostedService<JT808TcpReceiveTimeoutHostedService>();
  76. return config;
  77. }
  78. public static IJT808GatewayBuilder AddUdp(this IJT808GatewayBuilder config)
  79. {
  80. config.JT808Builder.Services.AddHostedService<JT808UdpServer>();
  81. config.JT808Builder.Services.AddHostedService<JT808UdpReceiveTimeoutHostedService>();
  82. return config;
  83. }
  84. public static IJT808GatewayBuilder AddHttp(this IJT808GatewayBuilder config)
  85. {
  86. config.JT808Builder.Services.AddSingleton<IJT808Authorization, JT808AuthorizationDefault>();
  87. config.JT808Builder.Services.AddSingleton<JT808MsgIdDefaultWebApiHandler>();
  88. config.JT808Builder.Services.AddHostedService<JT808HttpServer>();
  89. return config;
  90. }
  91. public static IJT808GatewayBuilder AddHttp<TJT808MsgIdDefaultWebApiHandler>(this IJT808GatewayBuilder config)
  92. where TJT808MsgIdDefaultWebApiHandler: JT808MsgIdDefaultWebApiHandler
  93. {
  94. config.JT808Builder.Services.AddSingleton<IJT808Authorization, JT808AuthorizationDefault>();
  95. config.JT808Builder.Services.AddSingleton(typeof(JT808MsgIdDefaultWebApiHandler),typeof(TJT808MsgIdDefaultWebApiHandler));
  96. config.JT808Builder.Services.AddHostedService<JT808HttpServer>();
  97. return config;
  98. }
  99. private static IJT808GatewayBuilder AddJT808Core(this IJT808GatewayBuilder config)
  100. {
  101. config.JT808Builder.Services.AddSingleton<JT808MessageHandler>();
  102. config.JT808Builder.Services.AddSingleton<JT808SessionManager>();
  103. return config;
  104. }
  105. }
  106. }