Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.
 
 
 

56 rader
2.6 KiB

  1. using JT808.DotNetty.Codecs;
  2. using JT808.DotNetty.Configurations;
  3. using JT808.DotNetty.Handlers;
  4. using JT808.DotNetty.Interfaces;
  5. using JT808.DotNetty.Internal;
  6. using Microsoft.Extensions.DependencyInjection;
  7. using Microsoft.Extensions.DependencyInjection.Extensions;
  8. using Microsoft.Extensions.Hosting;
  9. using Newtonsoft.Json;
  10. using System;
  11. using System.Reflection;
  12. using System.Runtime.CompilerServices;
  13. [assembly: InternalsVisibleTo("JT808.DotNetty.Test")]
  14. namespace JT808.DotNetty
  15. {
  16. public static class JT808DotnettyExtensions
  17. {
  18. static JT808DotnettyExtensions()
  19. {
  20. JsonSerializerSettings setting = new JsonSerializerSettings();
  21. JsonConvert.DefaultSettings = new Func<JsonSerializerSettings>(() =>
  22. {
  23. //日期类型默认格式化处理
  24. setting.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
  25. setting.DateFormatHandling = Newtonsoft.Json.DateFormatHandling.MicrosoftDateFormat;
  26. setting.DateFormatString = "yyyy-MM-dd HH:mm:ss";
  27. setting.NullValueHandling = NullValueHandling.Include;
  28. return setting;
  29. });
  30. }
  31. public static IHostBuilder UseJT808Host(this IHostBuilder builder)
  32. {
  33. return builder.ConfigureServices((hostContext, services) =>
  34. {
  35. services.Configure<JT808Configuration>(hostContext.Configuration.GetSection("JT808Configuration"));
  36. services.TryAddSingleton<JT808SessionManager>();
  37. services.TryAddSingleton<JT808AtomicCounterService>();
  38. services.TryAddSingleton<JT808TransmitAddressFilterService>();
  39. services.TryAddSingleton<JT808MsgIdHandlerBase,JT808MsgIdDefaultHandler>();
  40. services.TryAddSingleton<JT808SourcePackageChannelService>();
  41. services.TryAddSingleton<IJT808SourcePackageDispatcher, JT808SourcePackageDispatcherDefaultImpl>();
  42. services.TryAddScoped<JT808ConnectionHandler>();
  43. services.TryAddScoped<JT808Decoder>();
  44. services.TryAddScoped<JT808ServerHandler>();
  45. services.TryAddSingleton<IJT808SessionService, JT808SessionServiceDefaultImpl>();
  46. services.TryAddSingleton<IJT808UnificationSendService, JT808UnificationSendServiceDefaultImpl>();
  47. services.TryAddSingleton<JT808WebAPIService>();
  48. services.TryAddScoped<JT808WebAPIServerHandler>();
  49. services.AddHostedService<JT808ServerHost>();
  50. services.AddHostedService<JT808WebAPIServerHost>();
  51. });
  52. }
  53. }
  54. }