From 01df011bc6a849df06fd5faee82a4e1fbb50f8ae Mon Sep 17 00:00:00 2001
From: SmallChi <564952747@qq.com>
Date: Wed, 26 Dec 2018 19:34:41 +0800
Subject: [PATCH] =?UTF-8?q?=E5=B0=86=E9=A1=B9=E7=9B=AE=E6=8A=BD=E5=8F=96?=
=?UTF-8?q?=E5=87=BA=E6=9D=A5=E5=88=86=E6=A8=A1=E5=9D=97=E5=8D=95=E7=8B=AC?=
=?UTF-8?q?=E5=A4=84=E7=90=86?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Dtos/JT808AtomicCounterDto.cs | 12 ++
.../Dtos/JT808DefaultResultDto.cs | 15 ++
.../Dtos/JT808IPAddressDto.cs | 35 ++++
.../Dtos/JT808ResultDto.cs | 24 +++
.../Dtos/JT808SourcePackageChannelInfoDto.cs | 33 ++++
.../Dtos/JT808TcpSessionInfoDto.cs | 24 +++
.../Dtos/JT808UnificationSendRequestDto.cs | 11 ++
.../IJT808SessionPublishing.cs | 12 ++
.../IJT808SourcePackageDispatcher.cs | 15 ++
.../JT808.DotNetty.Abstractions.csproj | 8 +
.../JT808Constants.cs | 9 +
.../JT808.DotNetty.Codecs.csproj | 14 ++
src/JT808.DotNetty.Codecs/JT808TcpDecoder.cs | 20 +++
src/JT808.DotNetty.Codecs/JT808UdpDecoder.cs | 20 +++
.../JT808.DotNetty.Configurations.csproj | 7 +
.../JT808ClientConfiguration.cs | 32 ++++
.../JT808Configuration.cs | 54 ++++++
.../JT808Constants.cs | 13 ++
.../JT808ClientConfiguration.cs | 35 ++++
.../Configurations/JT808Configuration.cs | 52 ++++++
.../Handlers/JT808MsgIdHttpHandlerBase.cs | 84 +++++++++
.../Handlers/JT808MsgIdTcpHandlerBase.cs | 160 ++++++++++++++++++
.../Handlers/JT808MsgIdUdpHandlerBase.cs | 160 ++++++++++++++++++
.../Impls/JT808SessionPublishingEmptyImpl.cs | 13 ++
.../JT808SourcePackageDispatcherEmptyImpl.cs | 16 ++
.../Interfaces/IJT808TcpSessionService.cs | 25 +++
.../IJT808UnificationTcpSendService.cs | 12 ++
.../IJT808UnificationUdpSendService.cs | 12 ++
.../JT808.DotNetty.Core.csproj | 20 +++
.../JT808CoreDotnettyExtensions.cs | 27 +++
.../Metadata/JT808AtomicCounter.cs | 44 +++++
.../Metadata/JT808HttpRequest.cs | 22 +++
.../Metadata/JT808HttpResponse.cs | 22 +++
.../Metadata/JT808Request.cs | 23 +++
.../Metadata/JT808Response.cs | 27 +++
.../Metadata/JT808TcpSession.cs | 29 ++++
.../Metadata/JT808UdpPackage.cs | 20 +++
.../Metadata/JT808UdpSession.cs | 35 ++++
.../Services/JT808TcpAtomicCounterService.cs | 45 +++++
.../Services/JT808TcpSessionService.cs | 73 ++++++++
.../JT808TransmitAddressFilterService.cs | 88 ++++++++++
.../Services/JT808UdpAtomicCounterService.cs | 45 +++++
.../JT808UnificationTcpSendService.cs | 55 ++++++
.../JT808UnificationUdpSendService.cs | 55 ++++++
.../Session/JT808TcpSessionManager.cs | 141 +++++++++++++++
.../Session/JT808UdpSessionManager.cs | 126 ++++++++++++++
src/JT808.DotNetty.Http/Class1.cs | 8 +
.../JT808.DotNetty.Http.csproj | 7 +
.../Handlers/JT808MsgIdDefaultTcpHandler.cs | 18 ++
.../Handlers/JT808TcpConnectionHandler.cs | 104 ++++++++++++
.../Handlers/JT808TcpServerHandler.cs | 96 +++++++++++
.../JT808.DotNetty.Tcp.csproj | 18 ++
.../JT808TcpDotnettyExtensions.cs | 34 ++++
src/JT808.DotNetty.Tcp/JT808TcpServerHost.cs | 95 +++++++++++
.../JT808.DotNetty.Test.csproj | 2 +
.../Handlers/JT808MsgIdDefaultUdpHandler.cs | 15 ++
.../Handlers/JT808UdpServerHandler.cs | 88 ++++++++++
.../JT808.DotNetty.Udp.csproj | 22 +++
.../JT808UdpDotnettyExtensions.cs | 32 ++++
src/JT808.DotNetty.Udp/JT808UdpServerHost.cs | 76 +++++++++
.../JT808MsgIdDefaultWebApiHandler.cs | 27 +++
.../Handlers/JT808WebAPIServerHandler.cs | 82 +++++++++
.../JT808.DotNetty.WebApi.csproj | 18 ++
.../JT808WebAPIServerHost.cs | 82 +++++++++
.../JT808WebApiDotnettyExtensions.cs | 21 +++
src/JT808.DotNetty.sln | 46 ++++-
src/JT808.DotNetty/Codecs/JT808UDPDecoder.cs | 31 ++++
.../Configurations/JT808Configuration.cs | 2 +
.../Handlers/JT808UDPServerHandler.cs | 88 ++++++++++
.../Interfaces/IJT808Publishing.cs | 12 --
.../Interfaces/IJT808SessionPublishing.cs | 4 +-
.../JT808TransmitAddressFilterService.cs | 1 -
src/JT808.DotNetty/JT808DotnettyExtensions.cs | 1 +
src/JT808.DotNetty/JT808UDPServerHost.cs | 82 +++++++++
.../Metadata/JT808UDPPackage.cs | 20 +++
75 files changed, 2935 insertions(+), 21 deletions(-)
create mode 100644 src/JT808.DotNetty.Abstractions/Dtos/JT808AtomicCounterDto.cs
create mode 100644 src/JT808.DotNetty.Abstractions/Dtos/JT808DefaultResultDto.cs
create mode 100644 src/JT808.DotNetty.Abstractions/Dtos/JT808IPAddressDto.cs
create mode 100644 src/JT808.DotNetty.Abstractions/Dtos/JT808ResultDto.cs
create mode 100644 src/JT808.DotNetty.Abstractions/Dtos/JT808SourcePackageChannelInfoDto.cs
create mode 100644 src/JT808.DotNetty.Abstractions/Dtos/JT808TcpSessionInfoDto.cs
create mode 100644 src/JT808.DotNetty.Abstractions/Dtos/JT808UnificationSendRequestDto.cs
create mode 100644 src/JT808.DotNetty.Abstractions/IJT808SessionPublishing.cs
create mode 100644 src/JT808.DotNetty.Abstractions/IJT808SourcePackageDispatcher.cs
create mode 100644 src/JT808.DotNetty.Abstractions/JT808.DotNetty.Abstractions.csproj
create mode 100644 src/JT808.DotNetty.Abstractions/JT808Constants.cs
create mode 100644 src/JT808.DotNetty.Codecs/JT808.DotNetty.Codecs.csproj
create mode 100644 src/JT808.DotNetty.Codecs/JT808TcpDecoder.cs
create mode 100644 src/JT808.DotNetty.Codecs/JT808UdpDecoder.cs
create mode 100644 src/JT808.DotNetty.Configurations/JT808.DotNetty.Configurations.csproj
create mode 100644 src/JT808.DotNetty.Configurations/JT808ClientConfiguration.cs
create mode 100644 src/JT808.DotNetty.Configurations/JT808Configuration.cs
create mode 100644 src/JT808.DotNetty.Configurations/JT808Constants.cs
create mode 100644 src/JT808.DotNetty.Core/Configurations/JT808ClientConfiguration.cs
create mode 100644 src/JT808.DotNetty.Core/Configurations/JT808Configuration.cs
create mode 100644 src/JT808.DotNetty.Core/Handlers/JT808MsgIdHttpHandlerBase.cs
create mode 100644 src/JT808.DotNetty.Core/Handlers/JT808MsgIdTcpHandlerBase.cs
create mode 100644 src/JT808.DotNetty.Core/Handlers/JT808MsgIdUdpHandlerBase.cs
create mode 100644 src/JT808.DotNetty.Core/Impls/JT808SessionPublishingEmptyImpl.cs
create mode 100644 src/JT808.DotNetty.Core/Impls/JT808SourcePackageDispatcherEmptyImpl.cs
create mode 100644 src/JT808.DotNetty.Core/Interfaces/IJT808TcpSessionService.cs
create mode 100644 src/JT808.DotNetty.Core/Interfaces/IJT808UnificationTcpSendService.cs
create mode 100644 src/JT808.DotNetty.Core/Interfaces/IJT808UnificationUdpSendService.cs
create mode 100644 src/JT808.DotNetty.Core/JT808.DotNetty.Core.csproj
create mode 100644 src/JT808.DotNetty.Core/JT808CoreDotnettyExtensions.cs
create mode 100644 src/JT808.DotNetty.Core/Metadata/JT808AtomicCounter.cs
create mode 100644 src/JT808.DotNetty.Core/Metadata/JT808HttpRequest.cs
create mode 100644 src/JT808.DotNetty.Core/Metadata/JT808HttpResponse.cs
create mode 100644 src/JT808.DotNetty.Core/Metadata/JT808Request.cs
create mode 100644 src/JT808.DotNetty.Core/Metadata/JT808Response.cs
create mode 100644 src/JT808.DotNetty.Core/Metadata/JT808TcpSession.cs
create mode 100644 src/JT808.DotNetty.Core/Metadata/JT808UdpPackage.cs
create mode 100644 src/JT808.DotNetty.Core/Metadata/JT808UdpSession.cs
create mode 100644 src/JT808.DotNetty.Core/Services/JT808TcpAtomicCounterService.cs
create mode 100644 src/JT808.DotNetty.Core/Services/JT808TcpSessionService.cs
create mode 100644 src/JT808.DotNetty.Core/Services/JT808TransmitAddressFilterService.cs
create mode 100644 src/JT808.DotNetty.Core/Services/JT808UdpAtomicCounterService.cs
create mode 100644 src/JT808.DotNetty.Core/Services/JT808UnificationTcpSendService.cs
create mode 100644 src/JT808.DotNetty.Core/Services/JT808UnificationUdpSendService.cs
create mode 100644 src/JT808.DotNetty.Core/Session/JT808TcpSessionManager.cs
create mode 100644 src/JT808.DotNetty.Core/Session/JT808UdpSessionManager.cs
create mode 100644 src/JT808.DotNetty.Http/Class1.cs
create mode 100644 src/JT808.DotNetty.Http/JT808.DotNetty.Http.csproj
create mode 100644 src/JT808.DotNetty.Tcp/Handlers/JT808MsgIdDefaultTcpHandler.cs
create mode 100644 src/JT808.DotNetty.Tcp/Handlers/JT808TcpConnectionHandler.cs
create mode 100644 src/JT808.DotNetty.Tcp/Handlers/JT808TcpServerHandler.cs
create mode 100644 src/JT808.DotNetty.Tcp/JT808.DotNetty.Tcp.csproj
create mode 100644 src/JT808.DotNetty.Tcp/JT808TcpDotnettyExtensions.cs
create mode 100644 src/JT808.DotNetty.Tcp/JT808TcpServerHost.cs
create mode 100644 src/JT808.DotNetty.Udp/Handlers/JT808MsgIdDefaultUdpHandler.cs
create mode 100644 src/JT808.DotNetty.Udp/Handlers/JT808UdpServerHandler.cs
create mode 100644 src/JT808.DotNetty.Udp/JT808.DotNetty.Udp.csproj
create mode 100644 src/JT808.DotNetty.Udp/JT808UdpDotnettyExtensions.cs
create mode 100644 src/JT808.DotNetty.Udp/JT808UdpServerHost.cs
create mode 100644 src/JT808.DotNetty.WebApi/Handlers/JT808MsgIdDefaultWebApiHandler.cs
create mode 100644 src/JT808.DotNetty.WebApi/Handlers/JT808WebAPIServerHandler.cs
create mode 100644 src/JT808.DotNetty.WebApi/JT808.DotNetty.WebApi.csproj
create mode 100644 src/JT808.DotNetty.WebApi/JT808WebAPIServerHost.cs
create mode 100644 src/JT808.DotNetty.WebApi/JT808WebApiDotnettyExtensions.cs
create mode 100644 src/JT808.DotNetty/Codecs/JT808UDPDecoder.cs
create mode 100644 src/JT808.DotNetty/Handlers/JT808UDPServerHandler.cs
delete mode 100644 src/JT808.DotNetty/Interfaces/IJT808Publishing.cs
create mode 100644 src/JT808.DotNetty/JT808UDPServerHost.cs
create mode 100644 src/JT808.DotNetty/Metadata/JT808UDPPackage.cs
diff --git a/src/JT808.DotNetty.Abstractions/Dtos/JT808AtomicCounterDto.cs b/src/JT808.DotNetty.Abstractions/Dtos/JT808AtomicCounterDto.cs
new file mode 100644
index 0000000..b61c2a8
--- /dev/null
+++ b/src/JT808.DotNetty.Abstractions/Dtos/JT808AtomicCounterDto.cs
@@ -0,0 +1,12 @@
+namespace JT808.DotNetty.Abstractions.Dtos
+{
+ ///
+ /// 包计数器服务
+ ///
+ public class JT808AtomicCounterDto
+ {
+ public long MsgSuccessCount { get; set; }
+
+ public long MsgFailCount { get; set; }
+ }
+}
diff --git a/src/JT808.DotNetty.Abstractions/Dtos/JT808DefaultResultDto.cs b/src/JT808.DotNetty.Abstractions/Dtos/JT808DefaultResultDto.cs
new file mode 100644
index 0000000..7faf2ee
--- /dev/null
+++ b/src/JT808.DotNetty.Abstractions/Dtos/JT808DefaultResultDto.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace JT808.DotNetty.Abstractions.Dtos
+{
+ public class JT808DefaultResultDto: JT808ResultDto
+ {
+ public JT808DefaultResultDto()
+ {
+ Data = "Hello,JT808 WebAPI";
+ Code = JT808ResultCode.Ok;
+ }
+ }
+}
diff --git a/src/JT808.DotNetty.Abstractions/Dtos/JT808IPAddressDto.cs b/src/JT808.DotNetty.Abstractions/Dtos/JT808IPAddressDto.cs
new file mode 100644
index 0000000..6978e87
--- /dev/null
+++ b/src/JT808.DotNetty.Abstractions/Dtos/JT808IPAddressDto.cs
@@ -0,0 +1,35 @@
+using System;
+using System.Collections.Generic;
+using System.Net;
+using System.Text;
+
+namespace JT808.DotNetty.Abstractions.Dtos
+{
+ public class JT808IPAddressDto
+ {
+ public string Host { get; set; }
+
+ public int Port { get; set; }
+
+ private EndPoint endPoint;
+
+ public EndPoint EndPoint
+ {
+ get
+ {
+ if (endPoint == null)
+ {
+ if (IPAddress.TryParse(Host, out IPAddress ip))
+ {
+ endPoint = new IPEndPoint(ip, Port);
+ }
+ else
+ {
+ endPoint = new DnsEndPoint(Host, Port);
+ }
+ }
+ return endPoint;
+ }
+ }
+ }
+}
diff --git a/src/JT808.DotNetty.Abstractions/Dtos/JT808ResultDto.cs b/src/JT808.DotNetty.Abstractions/Dtos/JT808ResultDto.cs
new file mode 100644
index 0000000..97f00b9
--- /dev/null
+++ b/src/JT808.DotNetty.Abstractions/Dtos/JT808ResultDto.cs
@@ -0,0 +1,24 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace JT808.DotNetty.Abstractions.Dtos
+{
+ public class JT808ResultDto
+ {
+ public string Message { get; set; }
+
+ public int Code { get; set; }
+
+ public T Data { get; set; }
+ }
+
+ public class JT808ResultCode
+ {
+ public const int Ok = 200;
+ public const int Empty = 201;
+ public const int NotFound = 404;
+ public const int Fail = 400;
+ public const int Error = 500;
+ }
+}
diff --git a/src/JT808.DotNetty.Abstractions/Dtos/JT808SourcePackageChannelInfoDto.cs b/src/JT808.DotNetty.Abstractions/Dtos/JT808SourcePackageChannelInfoDto.cs
new file mode 100644
index 0000000..6ff0c37
--- /dev/null
+++ b/src/JT808.DotNetty.Abstractions/Dtos/JT808SourcePackageChannelInfoDto.cs
@@ -0,0 +1,33 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace JT808.DotNetty.Abstractions.Dtos
+{
+ ///
+ /// 原包通道信息
+ ///
+ public class JT808SourcePackageChannelInfoDto
+ {
+ ///
+ /// 远程地址
+ ///
+ public string RemoteAddress { get; set; }
+ ///
+ /// 本地地址
+ ///
+ public string LocalAddress { get; set; }
+ ///
+ /// 是否注册
+ ///
+ public bool Registered { get; set; }
+ ///
+ /// 是否活动
+ ///
+ public bool Active { get; set; }
+ ///
+ /// 是否打开
+ ///
+ public bool Open { get; set; }
+ }
+}
diff --git a/src/JT808.DotNetty.Abstractions/Dtos/JT808TcpSessionInfoDto.cs b/src/JT808.DotNetty.Abstractions/Dtos/JT808TcpSessionInfoDto.cs
new file mode 100644
index 0000000..4a71a69
--- /dev/null
+++ b/src/JT808.DotNetty.Abstractions/Dtos/JT808TcpSessionInfoDto.cs
@@ -0,0 +1,24 @@
+using System;
+
+namespace JT808.DotNetty.Abstractions.Dtos
+{
+ public class JT808TcpSessionInfoDto
+ {
+ ///
+ /// 最后上线时间
+ ///
+ public DateTime LastActiveTime { get; set; }
+ ///
+ /// 上线时间
+ ///
+ public DateTime StartTime { get; set; }
+ ///
+ /// 终端手机号
+ ///
+ public string TerminalPhoneNo { get; set; }
+ ///
+ /// 远程ip地址
+ ///
+ public string RemoteAddressIP { get; set; }
+ }
+}
diff --git a/src/JT808.DotNetty.Abstractions/Dtos/JT808UnificationSendRequestDto.cs b/src/JT808.DotNetty.Abstractions/Dtos/JT808UnificationSendRequestDto.cs
new file mode 100644
index 0000000..8f32473
--- /dev/null
+++ b/src/JT808.DotNetty.Abstractions/Dtos/JT808UnificationSendRequestDto.cs
@@ -0,0 +1,11 @@
+namespace JT808.DotNetty.Abstractions.Dtos
+{
+ ///
+ /// 统一下发请求参数
+ ///
+ public class JT808UnificationSendRequestDto
+ {
+ public string TerminalPhoneNo { get; set; }
+ public byte[] Data { get; set; }
+ }
+}
diff --git a/src/JT808.DotNetty.Abstractions/IJT808SessionPublishing.cs b/src/JT808.DotNetty.Abstractions/IJT808SessionPublishing.cs
new file mode 100644
index 0000000..13968c6
--- /dev/null
+++ b/src/JT808.DotNetty.Abstractions/IJT808SessionPublishing.cs
@@ -0,0 +1,12 @@
+using System.Threading.Tasks;
+
+namespace JT808.DotNetty.Abstractions
+{
+ ///
+ /// 会话通知(在线/离线)
+ ///
+ public interface IJT808SessionPublishing
+ {
+ Task PublishAsync(string topicName, string key, string value);
+ }
+}
diff --git a/src/JT808.DotNetty.Abstractions/IJT808SourcePackageDispatcher.cs b/src/JT808.DotNetty.Abstractions/IJT808SourcePackageDispatcher.cs
new file mode 100644
index 0000000..f3fa1dd
--- /dev/null
+++ b/src/JT808.DotNetty.Abstractions/IJT808SourcePackageDispatcher.cs
@@ -0,0 +1,15 @@
+using System.Threading.Tasks;
+
+namespace JT808.DotNetty.Abstractions
+{
+ ///
+ /// 源包分发器
+ /// 自定义源包分发器业务
+ /// ConfigureServices:
+ /// services.Replace(new ServiceDescriptor(typeof(IJT808SourcePackageDispatcher),typeof(JT808SourcePackageDispatcherDefaultImpl),ServiceLifetime.Singleton));
+ ///
+ public interface IJT808SourcePackageDispatcher
+ {
+ Task SendAsync(byte[] data);
+ }
+}
diff --git a/src/JT808.DotNetty.Abstractions/JT808.DotNetty.Abstractions.csproj b/src/JT808.DotNetty.Abstractions/JT808.DotNetty.Abstractions.csproj
new file mode 100644
index 0000000..3993216
--- /dev/null
+++ b/src/JT808.DotNetty.Abstractions/JT808.DotNetty.Abstractions.csproj
@@ -0,0 +1,8 @@
+
+
+
+ netstandard2.0
+ 7.1
+
+
+
diff --git a/src/JT808.DotNetty.Abstractions/JT808Constants.cs b/src/JT808.DotNetty.Abstractions/JT808Constants.cs
new file mode 100644
index 0000000..4f591d5
--- /dev/null
+++ b/src/JT808.DotNetty.Abstractions/JT808Constants.cs
@@ -0,0 +1,9 @@
+namespace JT808.DotNetty.Abstractions
+{
+ public static class JT808Constants
+ {
+ public const string SessionOnline= "JT808SessionOnline";
+
+ public const string SessionOffline = "JT808SessionOffline";
+ }
+}
diff --git a/src/JT808.DotNetty.Codecs/JT808.DotNetty.Codecs.csproj b/src/JT808.DotNetty.Codecs/JT808.DotNetty.Codecs.csproj
new file mode 100644
index 0000000..19d837a
--- /dev/null
+++ b/src/JT808.DotNetty.Codecs/JT808.DotNetty.Codecs.csproj
@@ -0,0 +1,14 @@
+
+
+
+ netstandard2.0
+ 7.1
+
+
+
+
+
+
+
+
+
diff --git a/src/JT808.DotNetty.Codecs/JT808TcpDecoder.cs b/src/JT808.DotNetty.Codecs/JT808TcpDecoder.cs
new file mode 100644
index 0000000..376194e
--- /dev/null
+++ b/src/JT808.DotNetty.Codecs/JT808TcpDecoder.cs
@@ -0,0 +1,20 @@
+using DotNetty.Buffers;
+using DotNetty.Codecs;
+using System.Collections.Generic;
+using JT808.Protocol;
+using DotNetty.Transport.Channels;
+
+namespace JT808.DotNetty.Codecs
+{
+ public class JT808TcpDecoder : ByteToMessageDecoder
+ {
+ protected override void Decode(IChannelHandlerContext context, IByteBuffer input, List