using JT808.Gateway.Abstractions; using JT808.Gateway.Authorization; using JT808.Gateway.Abstractions.Configurations; using JT808.Gateway.Handlers; using JT808.Gateway.Internal; using JT808.Gateway.Services; using JT808.Gateway.Session; using JT808.Protocol; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; using System; using System.Runtime.CompilerServices; [assembly: InternalsVisibleTo("JT808.Gateway.TestHosting")] [assembly: InternalsVisibleTo("JT808.Gateway.Test")] namespace JT808.Gateway { public static partial class JT808GatewayExtensions { //public static IJT808QueueGatewayBuilder AddQueueGateway(this IJT808Builder jT808Builder, Action config) //{ // IJT808QueueGatewayBuilder server = new JT808QueueGatewayBuilderDefault(jT808Builder); // server.JT808Builder.Services.Configure(config); // server.AddJT808Core(); // server.JT808Builder.Services.AddHostedService(); // return server; //} //public static IJT808NormalGatewayBuilder AddNormalGateway(this IJT808Builder jT808Builder, Action config) //{ // IJT808NormalGatewayBuilder server = new JT808NormalGatewayBuilderDefault(jT808Builder); // server.JT808Builder.Services.AddSingleton(); // server.JT808Builder.Services.Configure(config); // server.AddJT808Core(); // return server; //} //public static IJT808QueueGatewayBuilder AddQueueGateway(this IJT808Builder jT808Builder, IConfiguration configuration) //{ // IJT808QueueGatewayBuilder server = new JT808QueueGatewayBuilderDefault(jT808Builder); // server.JT808Builder.Services.Configure(configuration.GetSection("JT808Configuration")); // server.AddJT808Core(); // server.JT808Builder.Services.AddHostedService(); // return server; //} //public static IJT808NormalGatewayBuilder AddNormalGateway(this IJT808Builder jT808Builder, IConfiguration configuration) //{ // IJT808NormalGatewayBuilder server = new JT808NormalGatewayBuilderDefault(jT808Builder); // server.JT808Builder.Services.AddSingleton(); // server.JT808Builder.Services.Configure(configuration.GetSection("JT808Configuration")); // server.AddJT808Core(); // return server; //} public static IJT808GatewayBuilder AddGateway(this IJT808Builder jT808Builder, Action config) { JT808GatewayBuilderDefault jT808GatewayBuilderDefault = new JT808GatewayBuilderDefault(jT808Builder); jT808GatewayBuilderDefault.JT808Builder.Services.Configure(config); jT808GatewayBuilderDefault.AddJT808Core(); return jT808GatewayBuilderDefault; } public static IJT808GatewayBuilder AddGateway(this IJT808Builder jT808Builder, IConfiguration configuration) { JT808GatewayBuilderDefault jT808GatewayBuilderDefault = new JT808GatewayBuilderDefault(jT808Builder); jT808GatewayBuilderDefault.JT808Builder.Services.Configure(configuration.GetSection("JT808Configuration")); jT808GatewayBuilderDefault.AddJT808Core(); return jT808GatewayBuilderDefault; } public static IJT808GatewayBuilder ReplaceMessageHandler(this IJT808GatewayBuilder config) where TJT808MessageHandler : JT808MessageHandler { config.JT808Builder.Services.Replace(new ServiceDescriptor(typeof(JT808MessageHandler), typeof(TJT808MessageHandler), ServiceLifetime.Singleton)); return config; } public static IJT808GatewayBuilder AddTcp(this IJT808GatewayBuilder config) { config.JT808Builder.Services.AddHostedService(); config.JT808Builder.Services.AddHostedService(); return config; } public static IJT808GatewayBuilder AddUdp(this IJT808GatewayBuilder config) { config.JT808Builder.Services.AddHostedService(); config.JT808Builder.Services.AddHostedService(); return config; } public static IJT808GatewayBuilder AddHttp(this IJT808GatewayBuilder config) { config.JT808Builder.Services.AddSingleton(); config.JT808Builder.Services.AddSingleton(); config.JT808Builder.Services.AddHostedService(); return config; } public static IJT808GatewayBuilder AddHttp(this IJT808GatewayBuilder config) where TJT808MsgIdDefaultWebApiHandler: JT808MsgIdDefaultWebApiHandler { config.JT808Builder.Services.AddSingleton(); config.JT808Builder.Services.AddSingleton(typeof(JT808MsgIdDefaultWebApiHandler),typeof(TJT808MsgIdDefaultWebApiHandler)); config.JT808Builder.Services.AddHostedService(); return config; } private static IJT808GatewayBuilder AddJT808Core(this IJT808GatewayBuilder config) { config.JT808Builder.Services.AddSingleton(); config.JT808Builder.Services.AddSingleton(); return config; } } }