Просмотр исходного кода

1.增加Tcp/Udp流量收发计数服务及定时清零job

2.修改webapi接口及文档统一使用RESTful
tags/v1.0.0
SmallChi 6 лет назад
Родитель
Сommit
ea84b475cd
15 измененных файлов: 212 добавлений и 35 удалений
  1. +11
    -11
      api/README.md
  2. +16
    -11
      src/JT808.DotNetty.Abstractions/JT808Constants.cs
  3. +2
    -0
      src/JT808.DotNetty.Core/JT808BackgroundService.cs
  4. +6
    -4
      src/JT808.DotNetty.Core/Jobs/JT808TcpAtomicCouterResetDailyJob.cs
  5. +37
    -0
      src/JT808.DotNetty.Core/Jobs/JT808TcpTrafficResetDailyJob.cs
  6. +6
    -4
      src/JT808.DotNetty.Core/Jobs/JT808UdpAtomicCouterResetDailyJob.cs
  7. +37
    -0
      src/JT808.DotNetty.Core/Jobs/JT808UdpTrafficResetDailyJob.cs
  8. +30
    -0
      src/JT808.DotNetty.Core/Services/JT808TcpTrafficService.cs
  9. +30
    -0
      src/JT808.DotNetty.Core/Services/JT808UdpTrafficService.cs
  10. +9
    -2
      src/JT808.DotNetty.Core/Services/JT808UnificationTcpSendService.cs
  11. +8
    -1
      src/JT808.DotNetty.Core/Services/JT808UnificationUdpSendService.cs
  12. +8
    -1
      src/JT808.DotNetty.Tcp/Handlers/JT808TcpServerHandler.cs
  13. +2
    -0
      src/JT808.DotNetty.Tcp/JT808TcpDotnettyExtensions.cs
  14. +8
    -1
      src/JT808.DotNetty.Udp/Handlers/JT808UdpServerHandler.cs
  15. +2
    -0
      src/JT808.DotNetty.Udp/JT808UdpDotnettyExtensions.cs

+ 11
- 11
api/README.md Просмотреть файл

@@ -47,7 +47,7 @@


### <span id="tcp_send">基于Tcp统一下发设备消息服务</span> ### <span id="tcp_send">基于Tcp统一下发设备消息服务</span>


请求地址:UnificationTcpSend
请求地址:Tcp/UnificationSend


请求方式:POST 请求方式:POST


@@ -76,7 +76,7 @@


### <span id="udp_send">基于Udp统一下发设备消息服务</span> ### <span id="udp_send">基于Udp统一下发设备消息服务</span>


请求地址:UnificationUdpSend
请求地址:Udp/UnificationSend


请求方式:POST 请求方式:POST


@@ -116,7 +116,7 @@


#### 1.获取会话集合 #### 1.获取会话集合


请求地址:Session/Tcp/GetAll
请求地址:Tcp/Session/GetAll


请求方式:GET 请求方式:GET


@@ -150,7 +150,7 @@


#### 2.通过设备终端号移除对应会话 #### 2.通过设备终端号移除对应会话


请求地址:Session/Tcp/RemoveByTerminalPhoneNo
请求地址:Tcp/Session/RemoveByTerminalPhoneNo


请求方式:POST 请求方式:POST


@@ -189,7 +189,7 @@


#### 1.获取会话集合 #### 1.获取会话集合


请求地址:Session/Udp/GetAll
请求地址:Udp/Session/GetAll


请求方式:GET 请求方式:GET


@@ -223,7 +223,7 @@


#### 2.通过设备终端号移除对应会话 #### 2.通过设备终端号移除对应会话


请求地址:Session/Udp/RemoveByTerminalPhoneNo
请求地址:Udp/Session/RemoveByTerminalPhoneNo


请求方式:POST 请求方式:POST


@@ -253,7 +253,7 @@


#### 1.添加转发过滤地址 #### 1.添加转发过滤地址


请求地址:Transmit/Add
请求地址:Tcp/Transmit/Add


请求方式:POST 请求方式:POST


@@ -282,7 +282,7 @@


#### 2.删除转发过滤地址(不能删除在网关服务器配置文件配的地址) #### 2.删除转发过滤地址(不能删除在网关服务器配置文件配的地址)


请求地址:Transmit/Remove
请求地址:Tcp/Transmit/Remove


请求方式:POST 请求方式:POST


@@ -311,7 +311,7 @@


#### 3.获取转发过滤地址信息集合 #### 3.获取转发过滤地址信息集合


请求地址:Transmit/GetAll
请求地址:Tcp/Transmit/GetAll


请求方式:GET 请求方式:GET


@@ -336,7 +336,7 @@


### <span id="tcp_counter">基于Tcp消息包计数服务</span> ### <span id="tcp_counter">基于Tcp消息包计数服务</span>


请求地址:GetTcpAtomicCounter
请求地址:Tcp/GetAtomicCounter


请求方式:GET 请求方式:GET


@@ -362,7 +362,7 @@


### <span id="udp_counter">基于Udp消息包计数服务</span> ### <span id="udp_counter">基于Udp消息包计数服务</span>


请求地址:GetUdpAtomicCounter
请求地址:Udp/GetAtomicCounter


请求方式:GET 请求方式:GET




+ 16
- 11
src/JT808.DotNetty.Abstractions/JT808Constants.cs Просмотреть файл

@@ -13,50 +13,55 @@
public const string SessionPrefix = "Session"; public const string SessionPrefix = "Session";


public const string TransmitPrefix = "Transmit"; public const string TransmitPrefix = "Transmit";

public const string TcpPrefix = "Tcp";

public const string UdpPrefix = "Udp";

/// <summary> /// <summary>
/// 添加转发过滤地址 /// 添加转发过滤地址
/// </summary> /// </summary>
public static string TransmitAdd = $"{RouteTablePrefix}/{TransmitPrefix}/Add";
public static string TransmitAdd = $"{RouteTablePrefix}/{TcpPrefix}/{TransmitPrefix}/Add";
/// <summary> /// <summary>
/// 删除转发过滤地址(不能删除在网关服务器配置文件配的地址) /// 删除转发过滤地址(不能删除在网关服务器配置文件配的地址)
/// </summary> /// </summary>
public static string TransmitRemove = $"{RouteTablePrefix}/{TransmitPrefix}/Remove";
public static string TransmitRemove = $"{RouteTablePrefix}/{TcpPrefix}/{TransmitPrefix}/Remove";
/// <summary> /// <summary>
/// 获取转发过滤地址信息集合 /// 获取转发过滤地址信息集合
/// </summary> /// </summary>
public static string TransmitGetAll = $"{RouteTablePrefix}/{TransmitPrefix}/GetAll";
public static string TransmitGetAll = $"{RouteTablePrefix}/{TcpPrefix}/{TransmitPrefix}/GetAll";
/// <summary> /// <summary>
/// 获取Tcp包计数器 /// 获取Tcp包计数器
/// </summary> /// </summary>
public static string GetTcpAtomicCounter = $"{RouteTablePrefix}/GetTcpAtomicCounter";
public static string GetTcpAtomicCounter = $"{RouteTablePrefix}/{TcpPrefix}/GetAtomicCounter";
/// <summary> /// <summary>
/// 基于Tcp的会话服务集合 /// 基于Tcp的会话服务集合
/// </summary> /// </summary>
public static string SessionTcpGetAll = $"{RouteTablePrefix}/{SessionPrefix}/Tcp/GetAll";
public static string SessionTcpGetAll = $"{RouteTablePrefix}/{TcpPrefix}/{SessionPrefix}/GetAll";
/// <summary> /// <summary>
/// 基于Tcp的会话服务-通过设备终端号移除对应会话 /// 基于Tcp的会话服务-通过设备终端号移除对应会话
/// </summary> /// </summary>
public static string SessionTcpRemoveByTerminalPhoneNo = $"{RouteTablePrefix}/{SessionPrefix}/Tcp/RemoveByTerminalPhoneNo";
public static string SessionTcpRemoveByTerminalPhoneNo = $"{RouteTablePrefix}/{TcpPrefix}/{SessionPrefix}/RemoveByTerminalPhoneNo";
/// <summary> /// <summary>
/// 基于Tcp的统一下发信息 /// 基于Tcp的统一下发信息
/// </summary> /// </summary>
public static string UnificationTcpSend = $"{RouteTablePrefix}/UnificationTcpSend";
public static string UnificationTcpSend = $"{RouteTablePrefix}/{TcpPrefix}/UnificationSend";
/// <summary> /// <summary>
/// 获取Udp包计数器 /// 获取Udp包计数器
/// </summary> /// </summary>
public static string GetUdpAtomicCounter = $"{RouteTablePrefix}/GetUdpAtomicCounter";
public static string GetUdpAtomicCounter = $"{RouteTablePrefix}/{UdpPrefix}/GetAtomicCounter";
/// <summary> /// <summary>
/// 基于Udp的统一下发信息 /// 基于Udp的统一下发信息
/// </summary> /// </summary>
public static string UnificationUdpSend = $"{RouteTablePrefix}/UnificationUdpSend";
public static string UnificationUdpSend = $"{RouteTablePrefix}/{UdpPrefix}/UnificationSend";
/// <summary> /// <summary>
/// 基于Udp的会话服务集合 /// 基于Udp的会话服务集合
/// </summary> /// </summary>
public static string SessionUdpGetAll = $"{RouteTablePrefix}/{SessionPrefix}/Udp/GetAll";
public static string SessionUdpGetAll = $"{RouteTablePrefix}/{UdpPrefix}/{SessionPrefix}/GetAll";
/// <summary> /// <summary>
/// 基于Udp的会话服务-通过设备终端号移除对应会话 /// 基于Udp的会话服务-通过设备终端号移除对应会话
/// </summary> /// </summary>
public static string SessionUdpRemoveByTerminalPhoneNo = $"{RouteTablePrefix}/{SessionPrefix}/Udp/RemoveByTerminalPhoneNo";
public static string SessionUdpRemoveByTerminalPhoneNo = $"{RouteTablePrefix}/{UdpPrefix}/{SessionPrefix}/RemoveByTerminalPhoneNo";


} }
} }


+ 2
- 0
src/JT808.DotNetty.Core/JT808BackgroundService.cs Просмотреть файл

@@ -33,6 +33,8 @@ namespace JT808.DotNetty.Core


private Task _executingTask; private Task _executingTask;


public abstract string ServiceName { get; }

private readonly CancellationTokenSource _stoppingCts = new CancellationTokenSource(); private readonly CancellationTokenSource _stoppingCts = new CancellationTokenSource();


protected abstract Task ExecuteAsync(CancellationToken stoppingToken); protected abstract Task ExecuteAsync(CancellationToken stoppingToken);


+ 6
- 4
src/JT808.DotNetty.Core/Jobs/JT808TcpAtomicCouterResetDailyJob.cs Просмотреть файл

@@ -19,17 +19,19 @@ namespace JT808.DotNetty.Core.Jobs
_logger =loggerFactory.CreateLogger<JT808TcpAtomicCouterResetDailyJob>(); _logger =loggerFactory.CreateLogger<JT808TcpAtomicCouterResetDailyJob>();
} }


public override string ServiceName => nameof(JT808TcpAtomicCouterResetDailyJob);

protected override async Task ExecuteAsync(CancellationToken stoppingToken) 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) while (!stoppingToken.IsCancellationRequested)
{ {
_logger.LogInformation($"{nameof(JT808TcpAtomicCouterResetDailyJob)} task doing background work.");
_logger.LogInformation($"{ServiceName} task doing background work.");
_jT808TcpAtomicCounterService.Reset(); _jT808TcpAtomicCounterService.Reset();
await Task.Delay(DelayTimeSpan, stoppingToken); await Task.Delay(DelayTimeSpan, stoppingToken);
} }
_logger.LogInformation($"{nameof(JT808TcpAtomicCouterResetDailyJob)} background task is stopping.");
_logger.LogInformation($"{ServiceName} background task is stopping.");
} }
} }
} }

+ 37
- 0
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<JT808TcpTrafficResetDailyJob> _logger;

private readonly JT808TcpTrafficService _jT808TcpTrafficService;

public JT808TcpTrafficResetDailyJob(
JT808TcpTrafficService jT808TcpTrafficService,
ILoggerFactory loggerFactory)
{
_jT808TcpTrafficService = jT808TcpTrafficService;
_logger =loggerFactory.CreateLogger<JT808TcpTrafficResetDailyJob>();
}

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.");
}
}
}

+ 6
- 4
src/JT808.DotNetty.Core/Jobs/JT808UdpAtomicCouterResetDailyJob.cs Просмотреть файл

@@ -23,17 +23,19 @@ namespace JT808.DotNetty.Core.Jobs
_logger =loggerFactory.CreateLogger<JT808UdpAtomicCouterResetDailyJob>(); _logger =loggerFactory.CreateLogger<JT808UdpAtomicCouterResetDailyJob>();
} }


public override string ServiceName => nameof(JT808UdpAtomicCouterResetDailyJob);

protected override async Task ExecuteAsync(CancellationToken stoppingToken) 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) while (!stoppingToken.IsCancellationRequested)
{ {
_logger.LogInformation($"{nameof(JT808UdpAtomicCouterResetDailyJob)} task doing background work.");
_logger.LogInformation($"{ServiceName} task doing background work.");
_jT808UdpAtomicCounterService.Reset(); _jT808UdpAtomicCounterService.Reset();
await Task.Delay(DelayTimeSpan, stoppingToken); await Task.Delay(DelayTimeSpan, stoppingToken);
} }
_logger.LogInformation($"{nameof(JT808UdpAtomicCouterResetDailyJob)} background task is stopping.");
_logger.LogInformation($"{ServiceName} background task is stopping.");
} }
} }
} }

+ 37
- 0
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<JT808UdpTrafficResetDailyJob> _logger;

private readonly JT808UdpTrafficService _jT808UdpTrafficService;

public JT808UdpTrafficResetDailyJob(
JT808UdpTrafficService jT808UdpTrafficService,
ILoggerFactory loggerFactory)
{
_jT808UdpTrafficService = jT808UdpTrafficService;
_logger =loggerFactory.CreateLogger<JT808UdpTrafficResetDailyJob>();
}

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.");
}
}
}

+ 30
- 0
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();
}
}
}

+ 30
- 0
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();
}
}
}

+ 9
- 2
src/JT808.DotNetty.Core/Services/JT808UnificationTcpSendService.cs Просмотреть файл

@@ -2,6 +2,7 @@
using JT808.DotNetty.Abstractions.Dtos; using JT808.DotNetty.Abstractions.Dtos;
using JT808.DotNetty.Core; using JT808.DotNetty.Core;
using JT808.DotNetty.Core.Interfaces; using JT808.DotNetty.Core.Interfaces;
using JT808.DotNetty.Core.Services;
using System; using System;


namespace JT808.DotNetty.Internal namespace JT808.DotNetty.Internal
@@ -10,8 +11,13 @@ namespace JT808.DotNetty.Internal
{ {
private readonly JT808TcpSessionManager jT808SessionManager; private readonly JT808TcpSessionManager jT808SessionManager;


public JT808UnificationTcpSendService(JT808TcpSessionManager jT808SessionManager)
private readonly JT808TcpTrafficService jT808TcpTrafficService;

public JT808UnificationTcpSendService(
JT808TcpTrafficService jT808TcpTrafficService,
JT808TcpSessionManager jT808SessionManager)
{ {
this.jT808TcpTrafficService = jT808TcpTrafficService;
this.jT808SessionManager = jT808SessionManager; this.jT808SessionManager = jT808SessionManager;
} }


@@ -22,7 +28,8 @@ namespace JT808.DotNetty.Internal
{ {
var session = jT808SessionManager.GetSession(terminalPhoneNo); var session = jT808SessionManager.GetSession(terminalPhoneNo);
if (session != null) if (session != null)
{
{
jT808TcpTrafficService.SendSize(data.Length);
session.Channel.WriteAndFlushAsync(Unpooled.WrappedBuffer(data)); session.Channel.WriteAndFlushAsync(Unpooled.WrappedBuffer(data));
resultDto.Code = JT808ResultCode.Ok; resultDto.Code = JT808ResultCode.Ok;
resultDto.Data = true; resultDto.Data = true;


+ 8
- 1
src/JT808.DotNetty.Core/Services/JT808UnificationUdpSendService.cs Просмотреть файл

@@ -3,6 +3,7 @@ using DotNetty.Transport.Channels.Sockets;
using JT808.DotNetty.Abstractions.Dtos; using JT808.DotNetty.Abstractions.Dtos;
using JT808.DotNetty.Core; using JT808.DotNetty.Core;
using JT808.DotNetty.Core.Interfaces; using JT808.DotNetty.Core.Interfaces;
using JT808.DotNetty.Core.Services;
using System; using System;


namespace JT808.DotNetty.Internal namespace JT808.DotNetty.Internal
@@ -11,8 +12,13 @@ namespace JT808.DotNetty.Internal
{ {
private readonly JT808UdpSessionManager jT808SessionManager; private readonly JT808UdpSessionManager jT808SessionManager;


public JT808UnificationUdpSendService(JT808UdpSessionManager jT808SessionManager)
private readonly JT808UdpTrafficService jT808UdpTrafficService;

public JT808UnificationUdpSendService(
JT808UdpTrafficService jT808UdpTrafficService,
JT808UdpSessionManager jT808SessionManager)
{ {
this.jT808UdpTrafficService = jT808UdpTrafficService;
this.jT808SessionManager = jT808SessionManager; this.jT808SessionManager = jT808SessionManager;
} }


@@ -24,6 +30,7 @@ namespace JT808.DotNetty.Internal
var session = jT808SessionManager.GetSession(terminalPhoneNo); var session = jT808SessionManager.GetSession(terminalPhoneNo);
if (session != null) if (session != null)
{ {
jT808UdpTrafficService.SendSize(data.Length);
session.Channel.WriteAndFlushAsync(new DatagramPacket(Unpooled.WrappedBuffer(data), session.Sender)); session.Channel.WriteAndFlushAsync(new DatagramPacket(Unpooled.WrappedBuffer(data), session.Sender));
resultDto.Code = JT808ResultCode.Ok; resultDto.Code = JT808ResultCode.Ok;
resultDto.Data = true; resultDto.Data = true;


+ 8
- 1
src/JT808.DotNetty.Tcp/Handlers/JT808TcpServerHandler.cs Просмотреть файл

@@ -26,9 +26,12 @@ namespace JT808.DotNetty.Tcp.Handlers


private readonly JT808TcpAtomicCounterService jT808AtomicCounterService; private readonly JT808TcpAtomicCounterService jT808AtomicCounterService;


private readonly JT808TcpTrafficService jT808TcpTrafficService;

private readonly ILogger<JT808TcpServerHandler> logger; private readonly ILogger<JT808TcpServerHandler> logger;


public JT808TcpServerHandler( public JT808TcpServerHandler(
JT808TcpTrafficService jT808TcpTrafficService,
ILoggerFactory loggerFactory, ILoggerFactory loggerFactory,
JT808TransmitAddressFilterService jT808TransmitAddressFilterService, JT808TransmitAddressFilterService jT808TransmitAddressFilterService,
IJT808SourcePackageDispatcher jT808SourcePackageDispatcher, IJT808SourcePackageDispatcher jT808SourcePackageDispatcher,
@@ -36,6 +39,7 @@ namespace JT808.DotNetty.Tcp.Handlers
JT808TcpAtomicCounterService jT808AtomicCounterService, JT808TcpAtomicCounterService jT808AtomicCounterService,
JT808TcpSessionManager jT808SessionManager) JT808TcpSessionManager jT808SessionManager)
{ {
this.jT808TcpTrafficService = jT808TcpTrafficService;
this.jT808TransmitAddressFilterService = jT808TransmitAddressFilterService; this.jT808TransmitAddressFilterService = jT808TransmitAddressFilterService;
this.handler = handler; this.handler = handler;
this.jT808SessionManager = jT808SessionManager; this.jT808SessionManager = jT808SessionManager;
@@ -55,6 +59,7 @@ namespace JT808.DotNetty.Tcp.Handlers
//解析具体的消息体,具体调用JT808Serializer.Deserialize<T> //解析具体的消息体,具体调用JT808Serializer.Deserialize<T>
JT808HeaderPackage jT808HeaderPackage = JT808Serializer.Deserialize<JT808HeaderPackage>(msg); JT808HeaderPackage jT808HeaderPackage = JT808Serializer.Deserialize<JT808HeaderPackage>(msg);
jT808AtomicCounterService.MsgSuccessIncrement(); jT808AtomicCounterService.MsgSuccessIncrement();
jT808TcpTrafficService.ReceiveSize(msg.Length);
if (logger.IsEnabled(LogLevel.Debug)) if (logger.IsEnabled(LogLevel.Debug))
{ {
logger.LogDebug("accept package success count<<<" + jT808AtomicCounterService.MsgSuccessCount.ToString()); logger.LogDebug("accept package success count<<<" + jT808AtomicCounterService.MsgSuccessCount.ToString());
@@ -68,7 +73,9 @@ namespace JT808.DotNetty.Tcp.Handlers
{ {
if (!jT808TransmitAddressFilterService.ContainsKey(ctx.Channel.RemoteAddress)) 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));
} }
} }
} }


+ 2
- 0
src/JT808.DotNetty.Tcp/JT808TcpDotnettyExtensions.cs Просмотреть файл

@@ -24,11 +24,13 @@ namespace JT808.DotNetty.Tcp
serviceDescriptors.TryAddSingleton<JT808TcpSessionManager>(); serviceDescriptors.TryAddSingleton<JT808TcpSessionManager>();
serviceDescriptors.TryAddSingleton<JT808TcpAtomicCounterService>(); serviceDescriptors.TryAddSingleton<JT808TcpAtomicCounterService>();
serviceDescriptors.TryAddSingleton<JT808TransmitAddressFilterService>(); serviceDescriptors.TryAddSingleton<JT808TransmitAddressFilterService>();
serviceDescriptors.TryAddSingleton<JT808TcpTrafficService>();
serviceDescriptors.TryAddSingleton<JT808MsgIdTcpHandlerBase, JT808MsgIdDefaultTcpHandler>(); serviceDescriptors.TryAddSingleton<JT808MsgIdTcpHandlerBase, JT808MsgIdDefaultTcpHandler>();
serviceDescriptors.TryAddScoped<JT808TcpConnectionHandler>(); serviceDescriptors.TryAddScoped<JT808TcpConnectionHandler>();
serviceDescriptors.TryAddScoped<JT808TcpDecoder>(); serviceDescriptors.TryAddScoped<JT808TcpDecoder>();
serviceDescriptors.TryAddScoped<JT808TcpServerHandler>(); serviceDescriptors.TryAddScoped<JT808TcpServerHandler>();
serviceDescriptors.AddHostedService<JT808TcpAtomicCouterResetDailyJob>(); serviceDescriptors.AddHostedService<JT808TcpAtomicCouterResetDailyJob>();
serviceDescriptors.AddHostedService<JT808TcpTrafficResetDailyJob>();
serviceDescriptors.AddHostedService<JT808TcpServerHost>(); serviceDescriptors.AddHostedService<JT808TcpServerHost>();
return serviceDescriptors; return serviceDescriptors;
} }


+ 8
- 1
src/JT808.DotNetty.Udp/Handlers/JT808UdpServerHandler.cs Просмотреть файл

@@ -28,13 +28,17 @@ namespace JT808.DotNetty.Udp.Handlers


private readonly JT808MsgIdUdpHandlerBase handler; private readonly JT808MsgIdUdpHandlerBase handler;


private readonly JT808UdpTrafficService jT808UdpTrafficService;

public JT808UdpServerHandler( public JT808UdpServerHandler(
JT808UdpTrafficService jT808UdpTrafficService,
ILoggerFactory loggerFactory, ILoggerFactory loggerFactory,
IJT808SourcePackageDispatcher jT808SourcePackageDispatcher, IJT808SourcePackageDispatcher jT808SourcePackageDispatcher,
JT808MsgIdUdpHandlerBase handler, JT808MsgIdUdpHandlerBase handler,
JT808UdpAtomicCounterService jT808UdpAtomicCounterService, JT808UdpAtomicCounterService jT808UdpAtomicCounterService,
JT808UdpSessionManager jT808UdpSessionManager) JT808UdpSessionManager jT808UdpSessionManager)
{ {
this.jT808UdpTrafficService = jT808UdpTrafficService;
this.handler = handler; this.handler = handler;
this.jT808SourcePackageDispatcher = jT808SourcePackageDispatcher; this.jT808SourcePackageDispatcher = jT808SourcePackageDispatcher;
this.jT808UdpAtomicCounterService = jT808UdpAtomicCounterService; this.jT808UdpAtomicCounterService = jT808UdpAtomicCounterService;
@@ -47,6 +51,7 @@ namespace JT808.DotNetty.Udp.Handlers
try try
{ {
jT808SourcePackageDispatcher?.SendAsync(msg.Buffer); jT808SourcePackageDispatcher?.SendAsync(msg.Buffer);
jT808UdpTrafficService.ReceiveSize(msg.Buffer.Length);
//解析到头部,然后根据具体的消息Id通过队列去进行消费 //解析到头部,然后根据具体的消息Id通过队列去进行消费
//要是一定要解析到数据体可以在JT808MsgIdHandlerBase类中根据具体的消息, //要是一定要解析到数据体可以在JT808MsgIdHandlerBase类中根据具体的消息,
//解析具体的消息体,具体调用JT808Serializer.Deserialize<T> //解析具体的消息体,具体调用JT808Serializer.Deserialize<T>
@@ -63,7 +68,9 @@ namespace JT808.DotNetty.Udp.Handlers
JT808Response jT808Response = handlerFunc(new JT808Request(jT808HeaderPackage, msg.Buffer)); JT808Response jT808Response = handlerFunc(new JT808Request(jT808HeaderPackage, msg.Buffer));
if (jT808Response != null) 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));
} }
} }
} }


+ 2
- 0
src/JT808.DotNetty.Udp/JT808UdpDotnettyExtensions.cs Просмотреть файл

@@ -18,10 +18,12 @@ namespace JT808.DotNetty.Udp
{ {
serviceDescriptors.TryAddSingleton<JT808UdpSessionManager>(); serviceDescriptors.TryAddSingleton<JT808UdpSessionManager>();
serviceDescriptors.TryAddSingleton<JT808UdpAtomicCounterService>(); serviceDescriptors.TryAddSingleton<JT808UdpAtomicCounterService>();
serviceDescriptors.TryAddSingleton<JT808UdpTrafficService>();
serviceDescriptors.TryAddSingleton<JT808MsgIdUdpHandlerBase, JT808MsgIdDefaultUdpHandler>(); serviceDescriptors.TryAddSingleton<JT808MsgIdUdpHandlerBase, JT808MsgIdDefaultUdpHandler>();
serviceDescriptors.TryAddScoped<JT808UdpDecoder>(); serviceDescriptors.TryAddScoped<JT808UdpDecoder>();
serviceDescriptors.TryAddScoped<JT808UdpServerHandler>(); serviceDescriptors.TryAddScoped<JT808UdpServerHandler>();
serviceDescriptors.AddHostedService<JT808UdpAtomicCouterResetDailyJob>(); serviceDescriptors.AddHostedService<JT808UdpAtomicCouterResetDailyJob>();
serviceDescriptors.AddHostedService<JT808UdpTrafficResetDailyJob>();
serviceDescriptors.AddHostedService<JT808UdpServerHost>(); serviceDescriptors.AddHostedService<JT808UdpServerHost>();
return serviceDescriptors; return serviceDescriptors;
} }


Загрузка…
Отмена
Сохранить