diff --git a/doc/img/design_model.png b/doc/img/design_model.png
index eb9c7a9..297e9aa 100644
Binary files a/doc/img/design_model.png and b/doc/img/design_model.png differ
diff --git a/src/JT808.DotNetty.Client/JT808.DotNetty.Client.csproj b/src/JT808.DotNetty.Client/JT808.DotNetty.Client.csproj
new file mode 100644
index 0000000..91f9557
--- /dev/null
+++ b/src/JT808.DotNetty.Client/JT808.DotNetty.Client.csproj
@@ -0,0 +1,11 @@
+
+
+
+ netstandard2.0
+
+
+
+
+
+
+
diff --git a/src/JT808.DotNetty.Client/JT808TcpClient.cs b/src/JT808.DotNetty.Client/JT808TcpClient.cs
new file mode 100644
index 0000000..7a02dc5
--- /dev/null
+++ b/src/JT808.DotNetty.Client/JT808TcpClient.cs
@@ -0,0 +1,11 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace JT808.DotNetty.Client
+{
+ public class JT808TcpClient
+ {
+
+ }
+}
diff --git a/src/JT808.DotNetty.Core/Enums/JT808ModeType.cs b/src/JT808.DotNetty.Core/Enums/JT808ModeType.cs
new file mode 100644
index 0000000..31d7473
--- /dev/null
+++ b/src/JT808.DotNetty.Core/Enums/JT808ModeType.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace JT808.DotNetty.Core.Enums
+{
+ ///
+ /// 模式类型
+ ///
+ public enum JT808ModeType
+ {
+ Tcp=1,
+ Udp = 2
+ }
+}
diff --git a/src/JT808.DotNetty.Core/Handlers/JT808MsgIdTcpHandlerBase.cs b/src/JT808.DotNetty.Core/Handlers/JT808MsgIdTcpHandlerBase.cs
index 67bca08..d6291e4 100644
--- a/src/JT808.DotNetty.Core/Handlers/JT808MsgIdTcpHandlerBase.cs
+++ b/src/JT808.DotNetty.Core/Handlers/JT808MsgIdTcpHandlerBase.cs
@@ -43,8 +43,7 @@ namespace JT808.DotNetty.Core.Handlers
/// 平台无需回复
/// 实现自己的业务
///
- ///
- ///
+ ///
///
public virtual JT808Response Msg0x0001(JT808Request request)
{
@@ -53,8 +52,7 @@ namespace JT808.DotNetty.Core.Handlers
///
/// 终端心跳
///
- ///
- ///
+ ///
///
public virtual JT808Response Msg0x0002(JT808Request request)
{
@@ -69,8 +67,7 @@ namespace JT808.DotNetty.Core.Handlers
///
/// 终端注销
///
- ///
- ///
+ ///
///
public virtual JT808Response Msg0x0003(JT808Request request)
{
@@ -84,8 +81,7 @@ namespace JT808.DotNetty.Core.Handlers
///
/// 终端注册
///
- ///
- ///
+ ///
///
public virtual JT808Response Msg0x0100(JT808Request request)
{
@@ -99,8 +95,7 @@ namespace JT808.DotNetty.Core.Handlers
///
/// 终端鉴权
///
- ///
- ///
+ ///
///
public virtual JT808Response Msg0x0102(JT808Request request)
{
@@ -114,8 +109,7 @@ namespace JT808.DotNetty.Core.Handlers
///
/// 位置信息汇报
///
- ///
- ///
+ ///
///
public virtual JT808Response Msg0x0200(JT808Request request)
{
@@ -129,8 +123,7 @@ namespace JT808.DotNetty.Core.Handlers
///
/// 定位数据批量上传
///
- ///
- ///
+ ///
///
public virtual JT808Response Msg0x0704(JT808Request request)
{
@@ -144,8 +137,7 @@ namespace JT808.DotNetty.Core.Handlers
///
/// 数据上行透传
///
- ///
- ///
+ ///
///
public virtual JT808Response Msg0x0900(JT808Request request)
{
diff --git a/src/JT808.DotNetty.Core/Handlers/JT808MsgIdUdpHandlerBase.cs b/src/JT808.DotNetty.Core/Handlers/JT808MsgIdUdpHandlerBase.cs
index 5012734..44d9708 100644
--- a/src/JT808.DotNetty.Core/Handlers/JT808MsgIdUdpHandlerBase.cs
+++ b/src/JT808.DotNetty.Core/Handlers/JT808MsgIdUdpHandlerBase.cs
@@ -43,8 +43,7 @@ namespace JT808.DotNetty.Core.Handlers
/// 平台无需回复
/// 实现自己的业务
///
- ///
- ///
+ ///
///
public virtual JT808Response Msg0x0001(JT808Request request)
{
@@ -53,8 +52,7 @@ namespace JT808.DotNetty.Core.Handlers
///
/// 终端心跳
///
- ///
- ///
+ ///
///
public virtual JT808Response Msg0x0002(JT808Request request)
{
@@ -69,8 +67,7 @@ namespace JT808.DotNetty.Core.Handlers
///
/// 终端注销
///
- ///
- ///
+ ///
///
public virtual JT808Response Msg0x0003(JT808Request request)
{
@@ -84,8 +81,7 @@ namespace JT808.DotNetty.Core.Handlers
///
/// 终端注册
///
- ///
- ///
+ ///
///
public virtual JT808Response Msg0x0100(JT808Request request)
{
@@ -99,8 +95,7 @@ namespace JT808.DotNetty.Core.Handlers
///
/// 终端鉴权
///
- ///
- ///
+ ///
///
public virtual JT808Response Msg0x0102(JT808Request request)
{
@@ -129,8 +124,7 @@ namespace JT808.DotNetty.Core.Handlers
///
/// 定位数据批量上传
///
- ///
- ///
+ ///
///
public virtual JT808Response Msg0x0704(JT808Request request)
{
@@ -144,8 +138,7 @@ namespace JT808.DotNetty.Core.Handlers
///
/// 数据上行透传
///
- ///
- ///
+ ///
///
public virtual JT808Response Msg0x0900(JT808Request request)
{
diff --git a/src/JT808.DotNetty.Core/JT808CoreDotnettyExtensions.cs b/src/JT808.DotNetty.Core/JT808CoreDotnettyExtensions.cs
index b0da038..d48cac2 100644
--- a/src/JT808.DotNetty.Core/JT808CoreDotnettyExtensions.cs
+++ b/src/JT808.DotNetty.Core/JT808CoreDotnettyExtensions.cs
@@ -8,6 +8,7 @@ using JT808.DotNetty.Internal;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
+using Microsoft.Extensions.Options;
using Newtonsoft.Json;
using System;
using System.Runtime.CompilerServices;
@@ -16,6 +17,9 @@ using System.Runtime.CompilerServices;
[assembly: InternalsVisibleTo("JT808.DotNetty.Tcp.Test")]
[assembly: InternalsVisibleTo("JT808.DotNetty.Udp.Test")]
[assembly: InternalsVisibleTo("JT808.DotNetty.WebApi.Test")]
+[assembly: InternalsVisibleTo("JT808.DotNetty.Tcp")]
+[assembly: InternalsVisibleTo("JT808.DotNetty.Udp")]
+[assembly: InternalsVisibleTo("JT808.DotNetty.WebApi")]
namespace JT808.DotNetty.Core
{
public static class JT808CoreDotnettyExtensions
@@ -52,6 +56,33 @@ namespace JT808.DotNetty.Core
serviceDescriptors.Configure(configuration.GetSection("JT808Configuration"));
serviceDescriptors.TryAddSingleton();
serviceDescriptors.TryAddSingleton();
+ serviceDescriptors.TryAddSingleton();
+ serviceDescriptors.TryAddSingleton();
+ serviceDescriptors.TryAddSingleton();
+ serviceDescriptors.TryAddSingleton();
+ serviceDescriptors.TryAddSingleton();
+ serviceDescriptors.TryAddSingleton();
+ serviceDescriptors.TryAddSingleton();
+ return serviceDescriptors;
+ }
+
+ public static IServiceCollection AddJT808Core(this IServiceCollection serviceDescriptors, Action jt808Options, Newtonsoft.Json.JsonSerializerSettings settings = null)
+ {
+ if (settings != null)
+ {
+ JsonConvert.DefaultSettings = new Func(() =>
+ {
+ settings.Converters.Add(new JsonIPAddressConverter());
+ settings.Converters.Add(new JsonIPEndPointConverter());
+ settings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
+ return settings;
+ });
+ }
+ serviceDescriptors.Configure(jt808Options);
+ serviceDescriptors.TryAddSingleton();
+ serviceDescriptors.TryAddSingleton();
+ serviceDescriptors.TryAddSingleton();
+ serviceDescriptors.TryAddSingleton();
serviceDescriptors.TryAddSingleton();
serviceDescriptors.TryAddSingleton();
serviceDescriptors.TryAddSingleton();
diff --git a/src/JT808.DotNetty.Core/Jobs/JT808TcpAtomicCouterResetDailyJob.cs b/src/JT808.DotNetty.Core/Jobs/JT808TcpAtomicCouterResetDailyJob.cs
index 06625bd..2211981 100644
--- a/src/JT808.DotNetty.Core/Jobs/JT808TcpAtomicCouterResetDailyJob.cs
+++ b/src/JT808.DotNetty.Core/Jobs/JT808TcpAtomicCouterResetDailyJob.cs
@@ -5,17 +5,17 @@ using System.Threading.Tasks;
namespace JT808.DotNetty.Core.Jobs
{
- public class JT808TcpAtomicCouterResetDailyJob : JT808BackgroundService
+ internal class JT808TcpAtomicCouterResetDailyJob : JT808BackgroundService
{
private readonly ILogger _logger;
- private readonly JT808TcpAtomicCounterService _jT808TcpAtomicCounterService;
+ private readonly JT808AtomicCounterService _jT808AtomicCounterService;
public JT808TcpAtomicCouterResetDailyJob(
- JT808TcpAtomicCounterService jT808TcpAtomicCounterService,
+ JT808AtomicCounterServiceFactory jT808AtomicCounterServiceFactory,
ILoggerFactory loggerFactory)
{
- _jT808TcpAtomicCounterService = jT808TcpAtomicCounterService;
+ _jT808AtomicCounterService = jT808AtomicCounterServiceFactory.Create(Enums.JT808ModeType.Tcp);
_logger =loggerFactory.CreateLogger();
}
@@ -28,7 +28,7 @@ namespace JT808.DotNetty.Core.Jobs
while (!stoppingToken.IsCancellationRequested)
{
_logger.LogInformation($"{ServiceName} task doing background work.");
- _jT808TcpAtomicCounterService.Reset();
+ _jT808AtomicCounterService.Reset();
await Task.Delay(DelayTimeSpan, stoppingToken);
}
_logger.LogInformation($"{ServiceName} background task is stopping.");
diff --git a/src/JT808.DotNetty.Core/Jobs/JT808TcpTrafficResetDailyJob.cs b/src/JT808.DotNetty.Core/Jobs/JT808TcpTrafficResetDailyJob.cs
index ca270fa..f90fc75 100644
--- a/src/JT808.DotNetty.Core/Jobs/JT808TcpTrafficResetDailyJob.cs
+++ b/src/JT808.DotNetty.Core/Jobs/JT808TcpTrafficResetDailyJob.cs
@@ -5,17 +5,17 @@ using System.Threading.Tasks;
namespace JT808.DotNetty.Core.Jobs
{
- public class JT808TcpTrafficResetDailyJob : JT808BackgroundService
+ internal class JT808TcpTrafficResetDailyJob : JT808BackgroundService
{
private readonly ILogger _logger;
- private readonly JT808TcpTrafficService _jT808TcpTrafficService;
+ private readonly JT808TrafficService _jT808TrafficService;
public JT808TcpTrafficResetDailyJob(
- JT808TcpTrafficService jT808TcpTrafficService,
+ JT808TrafficServiceFactory jT808TrafficServiceFactory,
ILoggerFactory loggerFactory)
{
- _jT808TcpTrafficService = jT808TcpTrafficService;
+ _jT808TrafficService = jT808TrafficServiceFactory.Create( Enums.JT808ModeType.Tcp);
_logger =loggerFactory.CreateLogger();
}
@@ -28,7 +28,7 @@ namespace JT808.DotNetty.Core.Jobs
while (!stoppingToken.IsCancellationRequested)
{
_logger.LogInformation($"{ServiceName} task doing background work.");
- _jT808TcpTrafficService.ResetSize();
+ _jT808TrafficService.ResetSize();
await Task.Delay(DelayTimeSpan, stoppingToken);
}
_logger.LogInformation($"{ServiceName} background task is stopping.");
diff --git a/src/JT808.DotNetty.Core/Jobs/JT808UdpAtomicCouterResetDailyJob.cs b/src/JT808.DotNetty.Core/Jobs/JT808UdpAtomicCouterResetDailyJob.cs
index d609fdf..9e12afa 100644
--- a/src/JT808.DotNetty.Core/Jobs/JT808UdpAtomicCouterResetDailyJob.cs
+++ b/src/JT808.DotNetty.Core/Jobs/JT808UdpAtomicCouterResetDailyJob.cs
@@ -5,17 +5,17 @@ using System.Threading.Tasks;
namespace JT808.DotNetty.Core.Jobs
{
- public class JT808UdpAtomicCouterResetDailyJob : JT808BackgroundService
+ internal class JT808UdpAtomicCouterResetDailyJob : JT808BackgroundService
{
private readonly ILogger _logger;
- private readonly JT808UdpAtomicCounterService _jT808UdpAtomicCounterService;
+ private readonly JT808AtomicCounterService _jT808AtomicCounterService;
public JT808UdpAtomicCouterResetDailyJob(
- JT808UdpAtomicCounterService jT808UdpAtomicCounterService,
+ JT808AtomicCounterServiceFactory jT808AtomicCounterServiceFactory,
ILoggerFactory loggerFactory)
{
- _jT808UdpAtomicCounterService = jT808UdpAtomicCounterService;
+ _jT808AtomicCounterService = jT808AtomicCounterServiceFactory.Create(Enums.JT808ModeType.Udp);
_logger =loggerFactory.CreateLogger();
}
@@ -28,7 +28,7 @@ namespace JT808.DotNetty.Core.Jobs
while (!stoppingToken.IsCancellationRequested)
{
_logger.LogInformation($"{ServiceName} task doing background work.");
- _jT808UdpAtomicCounterService.Reset();
+ _jT808AtomicCounterService.Reset();
await Task.Delay(DelayTimeSpan, stoppingToken);
}
_logger.LogInformation($"{ServiceName} background task is stopping.");
diff --git a/src/JT808.DotNetty.Core/Jobs/JT808UdpTrafficResetDailyJob.cs b/src/JT808.DotNetty.Core/Jobs/JT808UdpTrafficResetDailyJob.cs
index 8641ac7..f9b9891 100644
--- a/src/JT808.DotNetty.Core/Jobs/JT808UdpTrafficResetDailyJob.cs
+++ b/src/JT808.DotNetty.Core/Jobs/JT808UdpTrafficResetDailyJob.cs
@@ -5,17 +5,17 @@ using System.Threading.Tasks;
namespace JT808.DotNetty.Core.Jobs
{
- public class JT808UdpTrafficResetDailyJob : JT808BackgroundService
+ internal class JT808UdpTrafficResetDailyJob : JT808BackgroundService
{
private readonly ILogger _logger;
- private readonly JT808UdpTrafficService _jT808UdpTrafficService;
+ private readonly JT808TrafficService _jT808TrafficService;
public JT808UdpTrafficResetDailyJob(
- JT808UdpTrafficService jT808UdpTrafficService,
+ JT808TrafficServiceFactory jT808TrafficServiceFactory,
ILoggerFactory loggerFactory)
{
- _jT808UdpTrafficService = jT808UdpTrafficService;
+ _jT808TrafficService = jT808TrafficServiceFactory.Create(Enums.JT808ModeType.Udp);
_logger =loggerFactory.CreateLogger();
}
@@ -28,7 +28,7 @@ namespace JT808.DotNetty.Core.Jobs
while (!stoppingToken.IsCancellationRequested)
{
_logger.LogInformation($"{ServiceName} task doing background work.");
- _jT808UdpTrafficService.ResetSize();
+ _jT808TrafficService.ResetSize();
await Task.Delay(DelayTimeSpan, stoppingToken);
}
_logger.LogInformation($"{ServiceName} background task is stopping.");
diff --git a/src/JT808.DotNetty.Core/Metadata/JT808AtomicCounter.cs b/src/JT808.DotNetty.Core/Metadata/JT808AtomicCounter.cs
index 72bc92a..25b8cca 100644
--- a/src/JT808.DotNetty.Core/Metadata/JT808AtomicCounter.cs
+++ b/src/JT808.DotNetty.Core/Metadata/JT808AtomicCounter.cs
@@ -9,7 +9,7 @@ namespace JT808.DotNetty.Core.Metadata
///
///
///
- public class JT808AtomicCounter
+ internal class JT808AtomicCounter
{
long counter = 0;
diff --git a/src/JT808.DotNetty.Core/Services/JT808TcpAtomicCounterService.cs b/src/JT808.DotNetty.Core/Services/JT808AtomicCounterService.cs
similarity index 69%
rename from src/JT808.DotNetty.Core/Services/JT808TcpAtomicCounterService.cs
rename to src/JT808.DotNetty.Core/Services/JT808AtomicCounterService.cs
index 5c3fa0e..85cf0d5 100644
--- a/src/JT808.DotNetty.Core/Services/JT808TcpAtomicCounterService.cs
+++ b/src/JT808.DotNetty.Core/Services/JT808AtomicCounterService.cs
@@ -3,17 +3,18 @@
namespace JT808.DotNetty.Core.Services
{
///
- /// Tcp计数包服务
+ /// 计数包服务
///
- public class JT808TcpAtomicCounterService
+ public class JT808AtomicCounterService
{
- private readonly JT808AtomicCounter MsgSuccessCounter = new JT808AtomicCounter();
+ private readonly JT808AtomicCounter MsgSuccessCounter;
- private readonly JT808AtomicCounter MsgFailCounter = new JT808AtomicCounter();
+ private readonly JT808AtomicCounter MsgFailCounter;
- public JT808TcpAtomicCounterService()
+ public JT808AtomicCounterService()
{
-
+ MsgSuccessCounter=new JT808AtomicCounter();
+ MsgFailCounter = new JT808AtomicCounter();
}
public void Reset()
diff --git a/src/JT808.DotNetty.Core/Services/JT808AtomicCounterServiceFactory.cs b/src/JT808.DotNetty.Core/Services/JT808AtomicCounterServiceFactory.cs
new file mode 100644
index 0000000..b3c30c4
--- /dev/null
+++ b/src/JT808.DotNetty.Core/Services/JT808AtomicCounterServiceFactory.cs
@@ -0,0 +1,30 @@
+using JT808.DotNetty.Core.Enums;
+using System;
+using System.Collections.Concurrent;
+
+namespace JT808.DotNetty.Core.Services
+{
+ public class JT808AtomicCounterServiceFactory
+ {
+ private readonly ConcurrentDictionary cache;
+
+ private JT808AtomicCounterServiceFactory()
+ {
+ cache = new ConcurrentDictionary();
+ }
+
+ public JT808AtomicCounterService Create(JT808ModeType type)
+ {
+ if(cache.TryGetValue(type,out var service))
+ {
+ return service;
+ }
+ else
+ {
+ var serviceNew = new JT808AtomicCounterService();
+ cache.TryAdd(type, serviceNew);
+ return serviceNew;
+ }
+ }
+ }
+}
diff --git a/src/JT808.DotNetty.Core/Services/JT808TcpTrafficService.cs b/src/JT808.DotNetty.Core/Services/JT808TrafficService.cs
similarity index 68%
rename from src/JT808.DotNetty.Core/Services/JT808TcpTrafficService.cs
rename to src/JT808.DotNetty.Core/Services/JT808TrafficService.cs
index 3b9f737..6740ff8 100644
--- a/src/JT808.DotNetty.Core/Services/JT808TcpTrafficService.cs
+++ b/src/JT808.DotNetty.Core/Services/JT808TrafficService.cs
@@ -5,11 +5,17 @@ using System.Text;
namespace JT808.DotNetty.Core.Services
{
- public class JT808TcpTrafficService
+ public class JT808TrafficService
{
- private readonly JT808AtomicCounter receiveCounter = new JT808AtomicCounter();
+ public JT808TrafficService()
+ {
+ receiveCounter = new JT808AtomicCounter();
+ sendCounter = new JT808AtomicCounter();
+ }
+
+ private readonly JT808AtomicCounter receiveCounter;
- private readonly JT808AtomicCounter sendCounter = new JT808AtomicCounter();
+ private readonly JT808AtomicCounter sendCounter;
public void ReceiveSize(long size)
{
diff --git a/src/JT808.DotNetty.Core/Services/JT808TrafficServiceFactory.cs b/src/JT808.DotNetty.Core/Services/JT808TrafficServiceFactory.cs
new file mode 100644
index 0000000..15b49e4
--- /dev/null
+++ b/src/JT808.DotNetty.Core/Services/JT808TrafficServiceFactory.cs
@@ -0,0 +1,33 @@
+using JT808.DotNetty.Core.Enums;
+using JT808.DotNetty.Core.Metadata;
+using System;
+using System.Collections.Concurrent;
+using System.Collections.Generic;
+using System.Text;
+
+namespace JT808.DotNetty.Core.Services
+{
+ public class JT808TrafficServiceFactory
+ {
+ private readonly ConcurrentDictionary cache;
+
+ private JT808TrafficServiceFactory()
+ {
+ cache = new ConcurrentDictionary();
+ }
+
+ public JT808TrafficService Create(JT808ModeType type)
+ {
+ if (cache.TryGetValue(type, out var service))
+ {
+ return service;
+ }
+ else
+ {
+ var serviceNew = new JT808TrafficService();
+ cache.TryAdd(type, serviceNew);
+ return serviceNew;
+ }
+ }
+ }
+}
diff --git a/src/JT808.DotNetty.Core/Services/JT808UdpAtomicCounterService.cs b/src/JT808.DotNetty.Core/Services/JT808UdpAtomicCounterService.cs
deleted file mode 100644
index 7c17fbf..0000000
--- a/src/JT808.DotNetty.Core/Services/JT808UdpAtomicCounterService.cs
+++ /dev/null
@@ -1,51 +0,0 @@
-using JT808.DotNetty.Core.Metadata;
-
-namespace JT808.DotNetty.Core.Services
-{
- ///
- /// Udp计数包服务
- ///
- public class JT808UdpAtomicCounterService
- {
- private readonly JT808AtomicCounter MsgSuccessCounter = new JT808AtomicCounter();
-
- private readonly JT808AtomicCounter MsgFailCounter = new JT808AtomicCounter();
-
- public JT808UdpAtomicCounterService()
- {
-
- }
-
- public void Reset()
- {
- MsgSuccessCounter.Reset();
- MsgFailCounter.Reset();
- }
-
- public long MsgSuccessIncrement()
- {
- return MsgSuccessCounter.Increment();
- }
-
- public long MsgSuccessCount
- {
- get
- {
- return MsgSuccessCounter.Count;
- }
- }
-
- public long MsgFailIncrement()
- {
- return MsgFailCounter.Increment();
- }
-
- public long MsgFailCount
- {
- get
- {
- return MsgFailCounter.Count;
- }
- }
- }
-}
diff --git a/src/JT808.DotNetty.Core/Services/JT808UdpTrafficService.cs b/src/JT808.DotNetty.Core/Services/JT808UdpTrafficService.cs
deleted file mode 100644
index 5c94b8e..0000000
--- a/src/JT808.DotNetty.Core/Services/JT808UdpTrafficService.cs
+++ /dev/null
@@ -1,40 +0,0 @@
-using JT808.DotNetty.Core.Metadata;
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace JT808.DotNetty.Core.Services
-{
- public class JT808UdpTrafficService
- {
- private readonly JT808AtomicCounter receiveCounter = new JT808AtomicCounter();
-
- private readonly JT808AtomicCounter sendCounter = new JT808AtomicCounter();
-
- public void ReceiveSize(long size)
- {
- receiveCounter.Add(size);
- }
-
- public long TotalReceiveSize
- {
- get { return receiveCounter.Count; }
- }
-
- public long TotalSendSize
- {
- get { return sendCounter.Count; }
- }
-
- public void SendSize(long size)
- {
- sendCounter.Add(size);
- }
-
- public void ResetSize()
- {
- receiveCounter.Reset();
- sendCounter.Reset();
- }
- }
-}
diff --git a/src/JT808.DotNetty.Core/Services/JT808UnificationTcpSendService.cs b/src/JT808.DotNetty.Core/Services/JT808UnificationTcpSendService.cs
index b762218..651bf35 100644
--- a/src/JT808.DotNetty.Core/Services/JT808UnificationTcpSendService.cs
+++ b/src/JT808.DotNetty.Core/Services/JT808UnificationTcpSendService.cs
@@ -12,13 +12,13 @@ namespace JT808.DotNetty.Internal
{
private readonly JT808TcpSessionManager jT808SessionManager;
- private readonly JT808TcpTrafficService jT808TcpTrafficService;
+ private readonly JT808TrafficService jT808TrafficService;
public JT808UnificationTcpSendService(
- JT808TcpTrafficService jT808TcpTrafficService,
+ JT808TrafficServiceFactory jT808TrafficServiceFactory,
JT808TcpSessionManager jT808SessionManager)
{
- this.jT808TcpTrafficService = jT808TcpTrafficService;
+ this.jT808TrafficService = jT808TrafficServiceFactory.Create(Core.Enums.JT808ModeType.Tcp);
this.jT808SessionManager = jT808SessionManager;
}
@@ -39,7 +39,7 @@ namespace JT808.DotNetty.Internal
}
else
{
- jT808TcpTrafficService.SendSize(data.Length);
+ jT808TrafficService.SendSize(data.Length);
session.Channel.WriteAndFlushAsync(Unpooled.WrappedBuffer(data));
resultDto.Code = JT808ResultCode.Ok;
resultDto.Data = true;
diff --git a/src/JT808.DotNetty.Core/Services/JT808UnificationUdpSendService.cs b/src/JT808.DotNetty.Core/Services/JT808UnificationUdpSendService.cs
index 896e2ac..5a58f83 100644
--- a/src/JT808.DotNetty.Core/Services/JT808UnificationUdpSendService.cs
+++ b/src/JT808.DotNetty.Core/Services/JT808UnificationUdpSendService.cs
@@ -12,13 +12,13 @@ namespace JT808.DotNetty.Internal
{
private readonly JT808UdpSessionManager jT808SessionManager;
- private readonly JT808UdpTrafficService jT808UdpTrafficService;
+ private readonly JT808TrafficService jT808TrafficService;
public JT808UnificationUdpSendService(
- JT808UdpTrafficService jT808UdpTrafficService,
+ JT808TrafficServiceFactory jT808TrafficServiceFactory,
JT808UdpSessionManager jT808SessionManager)
{
- this.jT808UdpTrafficService = jT808UdpTrafficService;
+ this.jT808TrafficService = jT808TrafficServiceFactory.Create(Core.Enums.JT808ModeType.Udp);
this.jT808SessionManager = jT808SessionManager;
}
@@ -30,7 +30,7 @@ namespace JT808.DotNetty.Internal
var session = jT808SessionManager.GetSession(terminalPhoneNo);
if (session != null)
{
- jT808UdpTrafficService.SendSize(data.Length);
+ jT808TrafficService.SendSize(data.Length);
session.Channel.WriteAndFlushAsync(new DatagramPacket(Unpooled.WrappedBuffer(data), session.Sender));
resultDto.Code = JT808ResultCode.Ok;
resultDto.Data = true;
diff --git a/src/JT808.DotNetty.Tcp/Handlers/JT808TcpServerHandler.cs b/src/JT808.DotNetty.Tcp/Handlers/JT808TcpServerHandler.cs
index 083c68c..429f152 100644
--- a/src/JT808.DotNetty.Tcp/Handlers/JT808TcpServerHandler.cs
+++ b/src/JT808.DotNetty.Tcp/Handlers/JT808TcpServerHandler.cs
@@ -24,27 +24,27 @@ namespace JT808.DotNetty.Tcp.Handlers
private readonly IJT808SourcePackageDispatcher jT808SourcePackageDispatcher;
- private readonly JT808TcpAtomicCounterService jT808AtomicCounterService;
+ private readonly JT808AtomicCounterService jT808AtomicCounterService;
- private readonly JT808TcpTrafficService jT808TcpTrafficService;
+ private readonly JT808TrafficService jT808TrafficService;
private readonly ILogger logger;
public JT808TcpServerHandler(
- JT808TcpTrafficService jT808TcpTrafficService,
+ JT808TrafficServiceFactory jT808TrafficServiceFactory,
ILoggerFactory loggerFactory,
JT808TransmitAddressFilterService jT808TransmitAddressFilterService,
IJT808SourcePackageDispatcher jT808SourcePackageDispatcher,
JT808MsgIdTcpHandlerBase handler,
- JT808TcpAtomicCounterService jT808AtomicCounterService,
+ JT808AtomicCounterServiceFactory jT808AtomicCounterServiceFactory,
JT808TcpSessionManager jT808SessionManager)
{
- this.jT808TcpTrafficService = jT808TcpTrafficService;
+ this.jT808TrafficService = jT808TrafficServiceFactory.Create(Core.Enums.JT808ModeType.Tcp);
this.jT808TransmitAddressFilterService = jT808TransmitAddressFilterService;
this.handler = handler;
this.jT808SessionManager = jT808SessionManager;
this.jT808SourcePackageDispatcher = jT808SourcePackageDispatcher;
- this.jT808AtomicCounterService = jT808AtomicCounterService;
+ this.jT808AtomicCounterService = jT808AtomicCounterServiceFactory.Create(Core.Enums.JT808ModeType.Tcp);
logger = loggerFactory.CreateLogger();
}
@@ -59,7 +59,7 @@ namespace JT808.DotNetty.Tcp.Handlers
//解析具体的消息体,具体调用JT808Serializer.Deserialize
JT808HeaderPackage jT808HeaderPackage = JT808Serializer.Deserialize(msg);
jT808AtomicCounterService.MsgSuccessIncrement();
- jT808TcpTrafficService.ReceiveSize(msg.Length);
+ jT808TrafficService.ReceiveSize(msg.Length);
if (logger.IsEnabled(LogLevel.Debug))
{
logger.LogDebug("accept package success count<<<" + jT808AtomicCounterService.MsgSuccessCount.ToString());
@@ -74,7 +74,7 @@ namespace JT808.DotNetty.Tcp.Handlers
if (!jT808TransmitAddressFilterService.ContainsKey(ctx.Channel.RemoteAddress))
{
var sendData = JT808Serializer.Serialize(jT808Response.Package, jT808Response.MinBufferSize);
- jT808TcpTrafficService.SendSize(sendData.Length);
+ jT808TrafficService.SendSize(sendData.Length);
ctx.WriteAndFlushAsync(Unpooled.WrappedBuffer(sendData));
}
}
diff --git a/src/JT808.DotNetty.Tcp/JT808TcpDotnettyExtensions.cs b/src/JT808.DotNetty.Tcp/JT808TcpDotnettyExtensions.cs
index 5bc1c72..577de2c 100644
--- a/src/JT808.DotNetty.Tcp/JT808TcpDotnettyExtensions.cs
+++ b/src/JT808.DotNetty.Tcp/JT808TcpDotnettyExtensions.cs
@@ -21,9 +21,7 @@ namespace JT808.DotNetty.Tcp
public static IServiceCollection AddJT808TcpHost(this IServiceCollection serviceDescriptors)
{
serviceDescriptors.TryAddSingleton();
- serviceDescriptors.TryAddSingleton();
serviceDescriptors.TryAddSingleton();
- serviceDescriptors.TryAddSingleton();
serviceDescriptors.TryAddSingleton();
serviceDescriptors.TryAddScoped();
serviceDescriptors.TryAddScoped();
diff --git a/src/JT808.DotNetty.Udp/Handlers/JT808UdpServerHandler.cs b/src/JT808.DotNetty.Udp/Handlers/JT808UdpServerHandler.cs
index 5059305..127ab33 100644
--- a/src/JT808.DotNetty.Udp/Handlers/JT808UdpServerHandler.cs
+++ b/src/JT808.DotNetty.Udp/Handlers/JT808UdpServerHandler.cs
@@ -20,7 +20,7 @@ namespace JT808.DotNetty.Udp.Handlers
{
private readonly IJT808SourcePackageDispatcher jT808SourcePackageDispatcher;
- private readonly JT808UdpAtomicCounterService jT808UdpAtomicCounterService;
+ private readonly JT808AtomicCounterService jT808AtomicCounterService;
private readonly ILogger logger;
@@ -28,20 +28,20 @@ namespace JT808.DotNetty.Udp.Handlers
private readonly JT808MsgIdUdpHandlerBase handler;
- private readonly JT808UdpTrafficService jT808UdpTrafficService;
+ private readonly JT808TrafficService jT808TrafficService;
public JT808UdpServerHandler(
- JT808UdpTrafficService jT808UdpTrafficService,
+ JT808TrafficServiceFactory jT808TrafficServiceFactory,
ILoggerFactory loggerFactory,
IJT808SourcePackageDispatcher jT808SourcePackageDispatcher,
JT808MsgIdUdpHandlerBase handler,
- JT808UdpAtomicCounterService jT808UdpAtomicCounterService,
+ JT808AtomicCounterServiceFactory jT808AtomicCounterServiceFactory,
JT808UdpSessionManager jT808UdpSessionManager)
{
- this.jT808UdpTrafficService = jT808UdpTrafficService;
+ this.jT808TrafficService = jT808TrafficServiceFactory.Create(Core.Enums.JT808ModeType.Udp);
this.handler = handler;
this.jT808SourcePackageDispatcher = jT808SourcePackageDispatcher;
- this.jT808UdpAtomicCounterService = jT808UdpAtomicCounterService;
+ this.jT808AtomicCounterService = jT808AtomicCounterServiceFactory.Create(Core.Enums.JT808ModeType.Udp);
this.jT808UdpSessionManager = jT808UdpSessionManager;
logger = loggerFactory.CreateLogger();
}
@@ -51,16 +51,16 @@ namespace JT808.DotNetty.Udp.Handlers
try
{
jT808SourcePackageDispatcher?.SendAsync(msg.Buffer);
- jT808UdpTrafficService.ReceiveSize(msg.Buffer.Length);
+ jT808TrafficService.ReceiveSize(msg.Buffer.Length);
//解析到头部,然后根据具体的消息Id通过队列去进行消费
//要是一定要解析到数据体可以在JT808MsgIdHandlerBase类中根据具体的消息,
//解析具体的消息体,具体调用JT808Serializer.Deserialize
JT808HeaderPackage jT808HeaderPackage = JT808Serializer.Deserialize(msg.Buffer);
- jT808UdpAtomicCounterService.MsgSuccessIncrement();
+ jT808AtomicCounterService.MsgSuccessIncrement();
jT808UdpSessionManager.TryAdd(ctx.Channel, msg.Sender, jT808HeaderPackage.Header.TerminalPhoneNo);
if (logger.IsEnabled(LogLevel.Debug))
{
- logger.LogDebug("accept package success count<<<" + jT808UdpAtomicCounterService.MsgSuccessCount.ToString());
+ logger.LogDebug("accept package success count<<<" + jT808AtomicCounterService.MsgSuccessCount.ToString());
}
Func handlerFunc;
if (handler.HandlerDict.TryGetValue(jT808HeaderPackage.Header.MsgId, out handlerFunc))
@@ -69,26 +69,26 @@ namespace JT808.DotNetty.Udp.Handlers
if (jT808Response != null)
{
var sendData = JT808Serializer.Serialize(jT808Response.Package, jT808Response.MinBufferSize);
- jT808UdpTrafficService.SendSize(sendData.Length);
+ jT808TrafficService.SendSize(sendData.Length);
ctx.WriteAndFlushAsync(new DatagramPacket(Unpooled.WrappedBuffer(sendData), msg.Sender));
}
}
}
catch (JT808.Protocol.Exceptions.JT808Exception ex)
{
- jT808UdpAtomicCounterService.MsgFailIncrement();
+ jT808AtomicCounterService.MsgFailIncrement();
if (logger.IsEnabled(LogLevel.Error))
{
- logger.LogError("accept package fail count<<<" + jT808UdpAtomicCounterService.MsgFailCount.ToString());
+ logger.LogError("accept package fail count<<<" + jT808AtomicCounterService.MsgFailCount.ToString());
logger.LogError(ex, "accept msg<<<" + ByteBufferUtil.HexDump(msg.Buffer));
}
}
catch (Exception ex)
{
- jT808UdpAtomicCounterService.MsgFailIncrement();
+ jT808AtomicCounterService.MsgFailIncrement();
if (logger.IsEnabled(LogLevel.Error))
{
- logger.LogError("accept package fail count<<<" + jT808UdpAtomicCounterService.MsgFailCount.ToString());
+ logger.LogError("accept package fail count<<<" + jT808AtomicCounterService.MsgFailCount.ToString());
logger.LogError(ex, "accept msg<<<" + ByteBufferUtil.HexDump(msg.Buffer));
}
}
diff --git a/src/JT808.DotNetty.Udp/JT808UdpDotnettyExtensions.cs b/src/JT808.DotNetty.Udp/JT808UdpDotnettyExtensions.cs
index 6e21558..9081927 100644
--- a/src/JT808.DotNetty.Udp/JT808UdpDotnettyExtensions.cs
+++ b/src/JT808.DotNetty.Udp/JT808UdpDotnettyExtensions.cs
@@ -19,8 +19,6 @@ namespace JT808.DotNetty.Udp
public static IServiceCollection AddJT808UdpHost(this IServiceCollection serviceDescriptors)
{
serviceDescriptors.TryAddSingleton();
- serviceDescriptors.TryAddSingleton();
- serviceDescriptors.TryAddSingleton();
serviceDescriptors.TryAddSingleton();
serviceDescriptors.TryAddScoped();
serviceDescriptors.TryAddScoped();
diff --git a/src/JT808.DotNetty.WebApi/Handlers/JT808MsgIdDefaultWebApiHandler.cs b/src/JT808.DotNetty.WebApi/Handlers/JT808MsgIdDefaultWebApiHandler.cs
index 2d741c9..d7f86e9 100644
--- a/src/JT808.DotNetty.WebApi/Handlers/JT808MsgIdDefaultWebApiHandler.cs
+++ b/src/JT808.DotNetty.WebApi/Handlers/JT808MsgIdDefaultWebApiHandler.cs
@@ -1,5 +1,6 @@
using JT808.DotNetty.Abstractions;
using JT808.DotNetty.Abstractions.Dtos;
+using JT808.DotNetty.Core.Enums;
using JT808.DotNetty.Core.Handlers;
using JT808.DotNetty.Core.Interfaces;
using JT808.DotNetty.Core.Metadata;
@@ -13,9 +14,9 @@ namespace JT808.DotNetty.WebApi.Handlers
///
public class JT808MsgIdDefaultWebApiHandler : JT808MsgIdHttpHandlerBase
{
- private readonly JT808TcpAtomicCounterService jT808TcpAtomicCounterService;
+ private readonly JT808AtomicCounterService jT808TcpAtomicCounterService;
- private readonly JT808UdpAtomicCounterService jT808UdpAtomicCounterService;
+ private readonly JT808AtomicCounterService jT808UdpAtomicCounterService;
private readonly JT808TransmitAddressFilterService jT808TransmitAddressFilterService;
@@ -27,9 +28,9 @@ namespace JT808.DotNetty.WebApi.Handlers
private readonly IJT808UnificationUdpSendService jT808UnificationUdpSendService;
- private readonly JT808TcpTrafficService jT808TcpTrafficService;
+ private readonly JT808TrafficService jT808TcpTrafficService;
- private readonly JT808UdpTrafficService jT808UdpTrafficService;
+ private readonly JT808TrafficService jT808UdpTrafficService;
private readonly JT808SimpleSystemCollectService jT808SimpleSystemCollectService;
@@ -39,19 +40,19 @@ namespace JT808.DotNetty.WebApi.Handlers
///
public JT808MsgIdDefaultWebApiHandler(
JT808SimpleSystemCollectService jT808SimpleSystemCollectService,
- JT808TcpTrafficService jT808TcpTrafficService,
+ JT808TrafficServiceFactory jT808TrafficServiceFactory,
IJT808UnificationTcpSendService jT808UnificationTcpSendService,
IJT808TcpSessionService jT808TcpSessionService,
JT808TransmitAddressFilterService jT808TransmitAddressFilterService,
- JT808TcpAtomicCounterService jT808TcpAtomicCounterService
+ JT808AtomicCounterServiceFactory jT808AtomicCounterServiceFactory
)
{
this.jT808SimpleSystemCollectService = jT808SimpleSystemCollectService;
- this.jT808TcpTrafficService = jT808TcpTrafficService;
+ this.jT808TcpTrafficService = jT808TrafficServiceFactory.Create(JT808ModeType.Tcp);
this.jT808UnificationTcpSendService = jT808UnificationTcpSendService;
this.jT808TcpSessionService = jT808TcpSessionService;
this.jT808TransmitAddressFilterService = jT808TransmitAddressFilterService;
- this.jT808TcpAtomicCounterService = jT808TcpAtomicCounterService;
+ this.jT808TcpAtomicCounterService = jT808AtomicCounterServiceFactory.Create(JT808ModeType.Tcp);
InitCommonRoute();
InitTcpRoute();
}
@@ -62,17 +63,17 @@ namespace JT808.DotNetty.WebApi.Handlers
///
public JT808MsgIdDefaultWebApiHandler(
JT808SimpleSystemCollectService jT808SimpleSystemCollectService,
- JT808UdpTrafficService jT808UdpTrafficService,
+ JT808TrafficServiceFactory jT808TrafficServiceFactory,
IJT808UdpSessionService jT808UdpSessionService,
IJT808UnificationUdpSendService jT808UnificationUdpSendService,
- JT808UdpAtomicCounterService jT808UdpAtomicCounterService
+ JT808AtomicCounterServiceFactory jT808AtomicCounterServiceFactory
)
{
this.jT808SimpleSystemCollectService = jT808SimpleSystemCollectService;
- this.jT808UdpTrafficService = jT808UdpTrafficService;
+ this.jT808UdpTrafficService = jT808TrafficServiceFactory.Create(JT808ModeType.Udp);
this.jT808UdpSessionService = jT808UdpSessionService;
this.jT808UnificationUdpSendService = jT808UnificationUdpSendService;
- this.jT808UdpAtomicCounterService = jT808UdpAtomicCounterService;
+ this.jT808UdpAtomicCounterService = jT808AtomicCounterServiceFactory.Create(JT808ModeType.Udp);
InitCommonRoute();
InitUdpRoute();
}
@@ -84,27 +85,25 @@ namespace JT808.DotNetty.WebApi.Handlers
///
public JT808MsgIdDefaultWebApiHandler(
JT808SimpleSystemCollectService jT808SimpleSystemCollectService,
- JT808TcpTrafficService jT808TcpTrafficService,
- JT808UdpTrafficService jT808UdpTrafficService,
+ JT808TrafficServiceFactory jT808TrafficServiceFactory,
IJT808UnificationTcpSendService jT808UnificationTcpSendService,
IJT808UnificationUdpSendService jT808UnificationUdpSendService,
IJT808TcpSessionService jT808TcpSessionService,
IJT808UdpSessionService jT808UdpSessionService,
JT808TransmitAddressFilterService jT808TransmitAddressFilterService,
- JT808TcpAtomicCounterService jT808TcpAtomicCounterService,
- JT808UdpAtomicCounterService jT808UdpAtomicCounterService
+ JT808AtomicCounterServiceFactory jT808AtomicCounterServiceFactory
)
{
this.jT808SimpleSystemCollectService = jT808SimpleSystemCollectService;
- this.jT808TcpTrafficService = jT808TcpTrafficService;
- this.jT808UdpTrafficService = jT808UdpTrafficService;
+ this.jT808TcpTrafficService = jT808TrafficServiceFactory.Create(JT808ModeType.Tcp);
+ this.jT808UdpTrafficService = jT808TrafficServiceFactory.Create(JT808ModeType.Udp);
this.jT808UdpSessionService = jT808UdpSessionService;
this.jT808UnificationTcpSendService = jT808UnificationTcpSendService;
this.jT808UnificationUdpSendService = jT808UnificationUdpSendService;
this.jT808TcpSessionService = jT808TcpSessionService;
this.jT808TransmitAddressFilterService = jT808TransmitAddressFilterService;
- this.jT808TcpAtomicCounterService = jT808TcpAtomicCounterService;
- this.jT808UdpAtomicCounterService = jT808UdpAtomicCounterService;
+ this.jT808TcpAtomicCounterService = jT808AtomicCounterServiceFactory.Create(JT808ModeType.Tcp);
+ this.jT808UdpAtomicCounterService = jT808AtomicCounterServiceFactory.Create(JT808ModeType.Udp);
InitCommonRoute();
InitTcpRoute();
InitUdpRoute();
diff --git a/src/JT808.DotNetty.WebApiClientTool/JT808.DotNetty.WebApiClientTool.csproj b/src/JT808.DotNetty.WebApiClientTool/JT808.DotNetty.WebApiClientTool.csproj
index 51eb294..75d438e 100644
--- a/src/JT808.DotNetty.WebApiClientTool/JT808.DotNetty.WebApiClientTool.csproj
+++ b/src/JT808.DotNetty.WebApiClientTool/JT808.DotNetty.WebApiClientTool.csproj
@@ -18,7 +18,7 @@
-
+
diff --git a/src/JT808.DotNetty.sln b/src/JT808.DotNetty.sln
index c48c449..b31d8b3 100644
--- a/src/JT808.DotNetty.sln
+++ b/src/JT808.DotNetty.sln
@@ -31,6 +31,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT808.DotNetty.Hosting", "J
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT808.DotNetty.WebApiClientTool", "JT808.DotNetty.WebApiClientTool\JT808.DotNetty.WebApiClientTool.csproj", "{9D86C951-94F2-4CBD-B177-8AF31DDB05D8}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JT808.DotNetty.Client", "JT808.DotNetty.Client\JT808.DotNetty.Client.csproj", "{87C08239-C57F-4FC5-9579-05D0723AA4A0}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -85,6 +87,10 @@ Global
{9D86C951-94F2-4CBD-B177-8AF31DDB05D8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9D86C951-94F2-4CBD-B177-8AF31DDB05D8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9D86C951-94F2-4CBD-B177-8AF31DDB05D8}.Release|Any CPU.Build.0 = Release|Any CPU
+ {87C08239-C57F-4FC5-9579-05D0723AA4A0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {87C08239-C57F-4FC5-9579-05D0723AA4A0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {87C08239-C57F-4FC5-9579-05D0723AA4A0}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {87C08239-C57F-4FC5-9579-05D0723AA4A0}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE