diff --git a/api/README.md b/api/README.md
index f1194b9..14437a5 100644
--- a/api/README.md
+++ b/api/README.md
@@ -47,7 +47,7 @@
### 基于Tcp统一下发设备消息服务
-请求地址:UnificationTcpSend
+请求地址:Tcp/UnificationSend
请求方式:POST
@@ -76,7 +76,7 @@
### 基于Udp统一下发设备消息服务
-请求地址:UnificationUdpSend
+请求地址:Udp/UnificationSend
请求方式:POST
@@ -116,7 +116,7 @@
#### 1.获取会话集合
-请求地址:Session/Tcp/GetAll
+请求地址:Tcp/Session/GetAll
请求方式:GET
@@ -150,7 +150,7 @@
#### 2.通过设备终端号移除对应会话
-请求地址:Session/Tcp/RemoveByTerminalPhoneNo
+请求地址:Tcp/Session/RemoveByTerminalPhoneNo
请求方式:POST
@@ -189,7 +189,7 @@
#### 1.获取会话集合
-请求地址:Session/Udp/GetAll
+请求地址:Udp/Session/GetAll
请求方式:GET
@@ -223,7 +223,7 @@
#### 2.通过设备终端号移除对应会话
-请求地址:Session/Udp/RemoveByTerminalPhoneNo
+请求地址:Udp/Session/RemoveByTerminalPhoneNo
请求方式:POST
@@ -253,7 +253,7 @@
#### 1.添加转发过滤地址
-请求地址:Transmit/Add
+请求地址:Tcp/Transmit/Add
请求方式:POST
@@ -282,7 +282,7 @@
#### 2.删除转发过滤地址(不能删除在网关服务器配置文件配的地址)
-请求地址:Transmit/Remove
+请求地址:Tcp/Transmit/Remove
请求方式:POST
@@ -311,7 +311,7 @@
#### 3.获取转发过滤地址信息集合
-请求地址:Transmit/GetAll
+请求地址:Tcp/Transmit/GetAll
请求方式:GET
@@ -336,7 +336,7 @@
### 基于Tcp消息包计数服务
-请求地址:GetTcpAtomicCounter
+请求地址:Tcp/GetAtomicCounter
请求方式:GET
@@ -362,7 +362,7 @@
### 基于Udp消息包计数服务
-请求地址:GetUdpAtomicCounter
+请求地址:Udp/GetAtomicCounter
请求方式:GET
diff --git a/src/JT808.DotNetty.Abstractions/JT808Constants.cs b/src/JT808.DotNetty.Abstractions/JT808Constants.cs
index ea9a959..14e3965 100644
--- a/src/JT808.DotNetty.Abstractions/JT808Constants.cs
+++ b/src/JT808.DotNetty.Abstractions/JT808Constants.cs
@@ -13,50 +13,55 @@
public const string SessionPrefix = "Session";
public const string TransmitPrefix = "Transmit";
+
+ public const string TcpPrefix = "Tcp";
+
+ public const string UdpPrefix = "Udp";
+
///
/// 添加转发过滤地址
///
- public static string TransmitAdd = $"{RouteTablePrefix}/{TransmitPrefix}/Add";
+ public static string TransmitAdd = $"{RouteTablePrefix}/{TcpPrefix}/{TransmitPrefix}/Add";
///
/// 删除转发过滤地址(不能删除在网关服务器配置文件配的地址)
///
- public static string TransmitRemove = $"{RouteTablePrefix}/{TransmitPrefix}/Remove";
+ public static string TransmitRemove = $"{RouteTablePrefix}/{TcpPrefix}/{TransmitPrefix}/Remove";
///
/// 获取转发过滤地址信息集合
///
- public static string TransmitGetAll = $"{RouteTablePrefix}/{TransmitPrefix}/GetAll";
+ public static string TransmitGetAll = $"{RouteTablePrefix}/{TcpPrefix}/{TransmitPrefix}/GetAll";
///
/// 获取Tcp包计数器
///
- public static string GetTcpAtomicCounter = $"{RouteTablePrefix}/GetTcpAtomicCounter";
+ public static string GetTcpAtomicCounter = $"{RouteTablePrefix}/{TcpPrefix}/GetAtomicCounter";
///
/// 基于Tcp的会话服务集合
///
- public static string SessionTcpGetAll = $"{RouteTablePrefix}/{SessionPrefix}/Tcp/GetAll";
+ public static string SessionTcpGetAll = $"{RouteTablePrefix}/{TcpPrefix}/{SessionPrefix}/GetAll";
///
/// 基于Tcp的会话服务-通过设备终端号移除对应会话
///
- public static string SessionTcpRemoveByTerminalPhoneNo = $"{RouteTablePrefix}/{SessionPrefix}/Tcp/RemoveByTerminalPhoneNo";
+ public static string SessionTcpRemoveByTerminalPhoneNo = $"{RouteTablePrefix}/{TcpPrefix}/{SessionPrefix}/RemoveByTerminalPhoneNo";
///
/// 基于Tcp的统一下发信息
///
- public static string UnificationTcpSend = $"{RouteTablePrefix}/UnificationTcpSend";
+ public static string UnificationTcpSend = $"{RouteTablePrefix}/{TcpPrefix}/UnificationSend";
///
/// 获取Udp包计数器
///
- public static string GetUdpAtomicCounter = $"{RouteTablePrefix}/GetUdpAtomicCounter";
+ public static string GetUdpAtomicCounter = $"{RouteTablePrefix}/{UdpPrefix}/GetAtomicCounter";
///
/// 基于Udp的统一下发信息
///
- public static string UnificationUdpSend = $"{RouteTablePrefix}/UnificationUdpSend";
+ public static string UnificationUdpSend = $"{RouteTablePrefix}/{UdpPrefix}/UnificationSend";
///
/// 基于Udp的会话服务集合
///
- public static string SessionUdpGetAll = $"{RouteTablePrefix}/{SessionPrefix}/Udp/GetAll";
+ public static string SessionUdpGetAll = $"{RouteTablePrefix}/{UdpPrefix}/{SessionPrefix}/GetAll";
///
/// 基于Udp的会话服务-通过设备终端号移除对应会话
///
- public static string SessionUdpRemoveByTerminalPhoneNo = $"{RouteTablePrefix}/{SessionPrefix}/Udp/RemoveByTerminalPhoneNo";
+ public static string SessionUdpRemoveByTerminalPhoneNo = $"{RouteTablePrefix}/{UdpPrefix}/{SessionPrefix}/RemoveByTerminalPhoneNo";
}
}
diff --git a/src/JT808.DotNetty.Core/JT808BackgroundService.cs b/src/JT808.DotNetty.Core/JT808BackgroundService.cs
index 9c9e512..bf7acc3 100644
--- a/src/JT808.DotNetty.Core/JT808BackgroundService.cs
+++ b/src/JT808.DotNetty.Core/JT808BackgroundService.cs
@@ -33,6 +33,8 @@ namespace JT808.DotNetty.Core
private Task _executingTask;
+ public abstract string ServiceName { get; }
+
private readonly CancellationTokenSource _stoppingCts = new CancellationTokenSource();
protected abstract Task ExecuteAsync(CancellationToken stoppingToken);
diff --git a/src/JT808.DotNetty.Core/Jobs/JT808TcpAtomicCouterResetDailyJob.cs b/src/JT808.DotNetty.Core/Jobs/JT808TcpAtomicCouterResetDailyJob.cs
index 8894a01..06625bd 100644
--- a/src/JT808.DotNetty.Core/Jobs/JT808TcpAtomicCouterResetDailyJob.cs
+++ b/src/JT808.DotNetty.Core/Jobs/JT808TcpAtomicCouterResetDailyJob.cs
@@ -19,17 +19,19 @@ namespace JT808.DotNetty.Core.Jobs
_logger =loggerFactory.CreateLogger();
}
+ public override string ServiceName => nameof(JT808TcpAtomicCouterResetDailyJob);
+
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
- _logger.LogInformation($"{nameof(JT808TcpAtomicCouterResetDailyJob)} is starting.");
- stoppingToken.Register(() => _logger.LogInformation($"{nameof(JT808TcpAtomicCouterResetDailyJob)} background task is stopping."));
+ _logger.LogInformation($"{ServiceName} is starting.");
+ stoppingToken.Register(() => _logger.LogInformation($"{ServiceName} background task is stopping."));
while (!stoppingToken.IsCancellationRequested)
{
- _logger.LogInformation($"{nameof(JT808TcpAtomicCouterResetDailyJob)} task doing background work.");
+ _logger.LogInformation($"{ServiceName} task doing background work.");
_jT808TcpAtomicCounterService.Reset();
await Task.Delay(DelayTimeSpan, stoppingToken);
}
- _logger.LogInformation($"{nameof(JT808TcpAtomicCouterResetDailyJob)} background task is stopping.");
+ _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
new file mode 100644
index 0000000..ca270fa
--- /dev/null
+++ b/src/JT808.DotNetty.Core/Jobs/JT808TcpTrafficResetDailyJob.cs
@@ -0,0 +1,37 @@
+using JT808.DotNetty.Core.Services;
+using Microsoft.Extensions.Logging;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace JT808.DotNetty.Core.Jobs
+{
+ public class JT808TcpTrafficResetDailyJob : JT808BackgroundService
+ {
+ private readonly ILogger _logger;
+
+ private readonly JT808TcpTrafficService _jT808TcpTrafficService;
+
+ public JT808TcpTrafficResetDailyJob(
+ JT808TcpTrafficService jT808TcpTrafficService,
+ ILoggerFactory loggerFactory)
+ {
+ _jT808TcpTrafficService = jT808TcpTrafficService;
+ _logger =loggerFactory.CreateLogger();
+ }
+
+ public override string ServiceName => nameof(JT808TcpTrafficResetDailyJob);
+
+ protected override async Task ExecuteAsync(CancellationToken stoppingToken)
+ {
+ _logger.LogInformation($"{ServiceName} is starting.");
+ stoppingToken.Register(() => _logger.LogInformation($"{ServiceName} background task is stopping."));
+ while (!stoppingToken.IsCancellationRequested)
+ {
+ _logger.LogInformation($"{ServiceName} task doing background work.");
+ _jT808TcpTrafficService.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 973143d..73630bb 100644
--- a/src/JT808.DotNetty.Core/Jobs/JT808UdpAtomicCouterResetDailyJob.cs
+++ b/src/JT808.DotNetty.Core/Jobs/JT808UdpAtomicCouterResetDailyJob.cs
@@ -23,17 +23,19 @@ namespace JT808.DotNetty.Core.Jobs
_logger =loggerFactory.CreateLogger();
}
+ public override string ServiceName => nameof(JT808UdpAtomicCouterResetDailyJob);
+
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
- _logger.LogInformation($"{nameof(JT808UdpAtomicCouterResetDailyJob)} is starting.");
- stoppingToken.Register(() => _logger.LogInformation($"{nameof(JT808UdpAtomicCouterResetDailyJob)} background task is stopping."));
+ _logger.LogInformation($"{ServiceName} is starting.");
+ stoppingToken.Register(() => _logger.LogInformation($"{ServiceName} background task is stopping."));
while (!stoppingToken.IsCancellationRequested)
{
- _logger.LogInformation($"{nameof(JT808UdpAtomicCouterResetDailyJob)} task doing background work.");
+ _logger.LogInformation($"{ServiceName} task doing background work.");
_jT808UdpAtomicCounterService.Reset();
await Task.Delay(DelayTimeSpan, stoppingToken);
}
- _logger.LogInformation($"{nameof(JT808UdpAtomicCouterResetDailyJob)} background task is stopping.");
+ _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
new file mode 100644
index 0000000..8641ac7
--- /dev/null
+++ b/src/JT808.DotNetty.Core/Jobs/JT808UdpTrafficResetDailyJob.cs
@@ -0,0 +1,37 @@
+using JT808.DotNetty.Core.Services;
+using Microsoft.Extensions.Logging;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace JT808.DotNetty.Core.Jobs
+{
+ public class JT808UdpTrafficResetDailyJob : JT808BackgroundService
+ {
+ private readonly ILogger _logger;
+
+ private readonly JT808UdpTrafficService _jT808UdpTrafficService;
+
+ public JT808UdpTrafficResetDailyJob(
+ JT808UdpTrafficService jT808UdpTrafficService,
+ ILoggerFactory loggerFactory)
+ {
+ _jT808UdpTrafficService = jT808UdpTrafficService;
+ _logger =loggerFactory.CreateLogger();
+ }
+
+ public override string ServiceName => nameof(JT808UdpTrafficResetDailyJob);
+
+ protected override async Task ExecuteAsync(CancellationToken stoppingToken)
+ {
+ _logger.LogInformation($"{ServiceName} is starting.");
+ stoppingToken.Register(() => _logger.LogInformation($"{ServiceName} background task is stopping."));
+ while (!stoppingToken.IsCancellationRequested)
+ {
+ _logger.LogInformation($"{ServiceName} task doing background work.");
+ _jT808UdpTrafficService.ResetSize();
+ await Task.Delay(DelayTimeSpan, stoppingToken);
+ }
+ _logger.LogInformation($"{ServiceName} background task is stopping.");
+ }
+ }
+}
diff --git a/src/JT808.DotNetty.Core/Services/JT808TcpTrafficService.cs b/src/JT808.DotNetty.Core/Services/JT808TcpTrafficService.cs
new file mode 100644
index 0000000..eacc211
--- /dev/null
+++ b/src/JT808.DotNetty.Core/Services/JT808TcpTrafficService.cs
@@ -0,0 +1,30 @@
+using JT808.DotNetty.Core.Metadata;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace JT808.DotNetty.Core.Services
+{
+ public class JT808TcpTrafficService
+ {
+ private readonly JT808AtomicCounter receiveCounter = new JT808AtomicCounter();
+
+ private readonly JT808AtomicCounter sendCounter = new JT808AtomicCounter();
+
+ public void ReceiveSize(long size)
+ {
+ receiveCounter.Add(size);
+ }
+
+ public void SendSize(long size)
+ {
+ sendCounter.Add(size);
+ }
+
+ public void ResetSize()
+ {
+ receiveCounter.Reset();
+ sendCounter.Reset();
+ }
+ }
+}
diff --git a/src/JT808.DotNetty.Core/Services/JT808UdpTrafficService.cs b/src/JT808.DotNetty.Core/Services/JT808UdpTrafficService.cs
new file mode 100644
index 0000000..7049cd6
--- /dev/null
+++ b/src/JT808.DotNetty.Core/Services/JT808UdpTrafficService.cs
@@ -0,0 +1,30 @@
+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 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 c60e803..e5a95c8 100644
--- a/src/JT808.DotNetty.Core/Services/JT808UnificationTcpSendService.cs
+++ b/src/JT808.DotNetty.Core/Services/JT808UnificationTcpSendService.cs
@@ -2,6 +2,7 @@
using JT808.DotNetty.Abstractions.Dtos;
using JT808.DotNetty.Core;
using JT808.DotNetty.Core.Interfaces;
+using JT808.DotNetty.Core.Services;
using System;
namespace JT808.DotNetty.Internal
@@ -10,8 +11,13 @@ namespace JT808.DotNetty.Internal
{
private readonly JT808TcpSessionManager jT808SessionManager;
- public JT808UnificationTcpSendService(JT808TcpSessionManager jT808SessionManager)
+ private readonly JT808TcpTrafficService jT808TcpTrafficService;
+
+ public JT808UnificationTcpSendService(
+ JT808TcpTrafficService jT808TcpTrafficService,
+ JT808TcpSessionManager jT808SessionManager)
{
+ this.jT808TcpTrafficService = jT808TcpTrafficService;
this.jT808SessionManager = jT808SessionManager;
}
@@ -22,7 +28,8 @@ namespace JT808.DotNetty.Internal
{
var session = jT808SessionManager.GetSession(terminalPhoneNo);
if (session != null)
- {
+ {
+ jT808TcpTrafficService.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 6b267bf..896e2ac 100644
--- a/src/JT808.DotNetty.Core/Services/JT808UnificationUdpSendService.cs
+++ b/src/JT808.DotNetty.Core/Services/JT808UnificationUdpSendService.cs
@@ -3,6 +3,7 @@ using DotNetty.Transport.Channels.Sockets;
using JT808.DotNetty.Abstractions.Dtos;
using JT808.DotNetty.Core;
using JT808.DotNetty.Core.Interfaces;
+using JT808.DotNetty.Core.Services;
using System;
namespace JT808.DotNetty.Internal
@@ -11,8 +12,13 @@ namespace JT808.DotNetty.Internal
{
private readonly JT808UdpSessionManager jT808SessionManager;
- public JT808UnificationUdpSendService(JT808UdpSessionManager jT808SessionManager)
+ private readonly JT808UdpTrafficService jT808UdpTrafficService;
+
+ public JT808UnificationUdpSendService(
+ JT808UdpTrafficService jT808UdpTrafficService,
+ JT808UdpSessionManager jT808SessionManager)
{
+ this.jT808UdpTrafficService = jT808UdpTrafficService;
this.jT808SessionManager = jT808SessionManager;
}
@@ -24,6 +30,7 @@ namespace JT808.DotNetty.Internal
var session = jT808SessionManager.GetSession(terminalPhoneNo);
if (session != null)
{
+ jT808UdpTrafficService.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 a0fdcdc..ed4308f 100644
--- a/src/JT808.DotNetty.Tcp/Handlers/JT808TcpServerHandler.cs
+++ b/src/JT808.DotNetty.Tcp/Handlers/JT808TcpServerHandler.cs
@@ -26,9 +26,12 @@ namespace JT808.DotNetty.Tcp.Handlers
private readonly JT808TcpAtomicCounterService jT808AtomicCounterService;
+ private readonly JT808TcpTrafficService jT808TcpTrafficService;
+
private readonly ILogger logger;
public JT808TcpServerHandler(
+ JT808TcpTrafficService jT808TcpTrafficService,
ILoggerFactory loggerFactory,
JT808TransmitAddressFilterService jT808TransmitAddressFilterService,
IJT808SourcePackageDispatcher jT808SourcePackageDispatcher,
@@ -36,6 +39,7 @@ namespace JT808.DotNetty.Tcp.Handlers
JT808TcpAtomicCounterService jT808AtomicCounterService,
JT808TcpSessionManager jT808SessionManager)
{
+ this.jT808TcpTrafficService = jT808TcpTrafficService;
this.jT808TransmitAddressFilterService = jT808TransmitAddressFilterService;
this.handler = handler;
this.jT808SessionManager = jT808SessionManager;
@@ -55,6 +59,7 @@ namespace JT808.DotNetty.Tcp.Handlers
//解析具体的消息体,具体调用JT808Serializer.Deserialize
JT808HeaderPackage jT808HeaderPackage = JT808Serializer.Deserialize(msg);
jT808AtomicCounterService.MsgSuccessIncrement();
+ jT808TcpTrafficService.ReceiveSize(msg.Length);
if (logger.IsEnabled(LogLevel.Debug))
{
logger.LogDebug("accept package success count<<<" + jT808AtomicCounterService.MsgSuccessCount.ToString());
@@ -68,7 +73,9 @@ namespace JT808.DotNetty.Tcp.Handlers
{
if (!jT808TransmitAddressFilterService.ContainsKey(ctx.Channel.RemoteAddress))
{
- ctx.WriteAndFlushAsync(Unpooled.WrappedBuffer(JT808Serializer.Serialize(jT808Response.Package, jT808Response.MinBufferSize)));
+ var sendData = JT808Serializer.Serialize(jT808Response.Package, jT808Response.MinBufferSize);
+ jT808TcpTrafficService.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 1db92cc..6277254 100644
--- a/src/JT808.DotNetty.Tcp/JT808TcpDotnettyExtensions.cs
+++ b/src/JT808.DotNetty.Tcp/JT808TcpDotnettyExtensions.cs
@@ -24,11 +24,13 @@ namespace JT808.DotNetty.Tcp
serviceDescriptors.TryAddSingleton();
serviceDescriptors.TryAddSingleton();
serviceDescriptors.TryAddSingleton();
+ serviceDescriptors.TryAddSingleton();
serviceDescriptors.TryAddSingleton();
serviceDescriptors.TryAddScoped();
serviceDescriptors.TryAddScoped();
serviceDescriptors.TryAddScoped();
serviceDescriptors.AddHostedService();
+ serviceDescriptors.AddHostedService();
serviceDescriptors.AddHostedService();
return serviceDescriptors;
}
diff --git a/src/JT808.DotNetty.Udp/Handlers/JT808UdpServerHandler.cs b/src/JT808.DotNetty.Udp/Handlers/JT808UdpServerHandler.cs
index 63c0f79..33f82b8 100644
--- a/src/JT808.DotNetty.Udp/Handlers/JT808UdpServerHandler.cs
+++ b/src/JT808.DotNetty.Udp/Handlers/JT808UdpServerHandler.cs
@@ -28,13 +28,17 @@ namespace JT808.DotNetty.Udp.Handlers
private readonly JT808MsgIdUdpHandlerBase handler;
+ private readonly JT808UdpTrafficService jT808UdpTrafficService;
+
public JT808UdpServerHandler(
+ JT808UdpTrafficService jT808UdpTrafficService,
ILoggerFactory loggerFactory,
IJT808SourcePackageDispatcher jT808SourcePackageDispatcher,
JT808MsgIdUdpHandlerBase handler,
JT808UdpAtomicCounterService jT808UdpAtomicCounterService,
JT808UdpSessionManager jT808UdpSessionManager)
{
+ this.jT808UdpTrafficService = jT808UdpTrafficService;
this.handler = handler;
this.jT808SourcePackageDispatcher = jT808SourcePackageDispatcher;
this.jT808UdpAtomicCounterService = jT808UdpAtomicCounterService;
@@ -47,6 +51,7 @@ namespace JT808.DotNetty.Udp.Handlers
try
{
jT808SourcePackageDispatcher?.SendAsync(msg.Buffer);
+ jT808UdpTrafficService.ReceiveSize(msg.Buffer.Length);
//解析到头部,然后根据具体的消息Id通过队列去进行消费
//要是一定要解析到数据体可以在JT808MsgIdHandlerBase类中根据具体的消息,
//解析具体的消息体,具体调用JT808Serializer.Deserialize
@@ -63,7 +68,9 @@ namespace JT808.DotNetty.Udp.Handlers
JT808Response jT808Response = handlerFunc(new JT808Request(jT808HeaderPackage, msg.Buffer));
if (jT808Response != null)
{
- ctx.WriteAndFlushAsync(new DatagramPacket(Unpooled.WrappedBuffer(JT808Serializer.Serialize(jT808Response.Package, jT808Response.MinBufferSize)), msg.Sender));
+ var sendData = JT808Serializer.Serialize(jT808Response.Package, jT808Response.MinBufferSize);
+ jT808UdpTrafficService.SendSize(sendData.Length);
+ ctx.WriteAndFlushAsync(new DatagramPacket(Unpooled.WrappedBuffer(sendData), msg.Sender));
}
}
}
diff --git a/src/JT808.DotNetty.Udp/JT808UdpDotnettyExtensions.cs b/src/JT808.DotNetty.Udp/JT808UdpDotnettyExtensions.cs
index 7662744..6619f04 100644
--- a/src/JT808.DotNetty.Udp/JT808UdpDotnettyExtensions.cs
+++ b/src/JT808.DotNetty.Udp/JT808UdpDotnettyExtensions.cs
@@ -18,10 +18,12 @@ namespace JT808.DotNetty.Udp
{
serviceDescriptors.TryAddSingleton();
serviceDescriptors.TryAddSingleton();
+ serviceDescriptors.TryAddSingleton();
serviceDescriptors.TryAddSingleton();
serviceDescriptors.TryAddScoped();
serviceDescriptors.TryAddScoped();
serviceDescriptors.AddHostedService();
+ serviceDescriptors.AddHostedService();
serviceDescriptors.AddHostedService();
return serviceDescriptors;
}