From c68061ab84a578a5928e5b1ec8c83dca390e5e8a Mon Sep 17 00:00:00 2001
From: SmallChi <564952747@qq.com>
Date: Sat, 1 Dec 2018 18:09:21 +0800
Subject: [PATCH] =?UTF-8?q?1.=E5=AE=8C=E5=96=84webapi=E6=9C=8D=E5=8A=A1?=
=?UTF-8?q?=E6=96=87=E6=A1=A3=202.=E5=8E=9F=E5=85=88=E8=BF=9C=E7=A8=8B?=
=?UTF-8?q?=E5=9C=B0=E5=9D=80=E8=BD=AC=E5=8F=91=E9=85=8D=E7=BD=AE=E6=9C=8D?=
=?UTF-8?q?=E5=8A=A1=E4=BF=AE=E6=94=B9=E4=B8=BA=E8=BD=AC=E5=8F=91=E5=9C=B0?=
=?UTF-8?q?=E5=9D=80=E8=BF=87=E6=BB=A4=E6=9C=8D=E5=8A=A1?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 176 +-------
api/README.md | 384 ++++++++++++++++++
... JT808TransmitAddressFilterServiceTest.cs} | 28 +-
.../Handlers/JT808ServerHandler.cs | 8 +-
...s => JT808TransmitAddressFilterService.cs} | 6 +-
.../Internal/JT808WebAPIService.cs | 51 ++-
src/JT808.DotNetty/JT808DotnettyExtensions.cs | 2 +-
7 files changed, 466 insertions(+), 189 deletions(-)
create mode 100644 api/README.md
rename src/JT808.DotNetty.Test/Internal/{JT808RemoteAddressTransmitConfigurationServiceTest.cs => JT808TransmitAddressFilterServiceTest.cs} (66%)
rename src/JT808.DotNetty/Internal/{JT808RemoteAddressTransmitConfigurationService.cs => JT808TransmitAddressFilterService.cs} (95%)
diff --git a/README.md b/README.md
index d54bf37..87c262e 100644
--- a/README.md
+++ b/README.md
@@ -31,11 +31,7 @@
### 2.集成WebApi服务器
-#### [2.1.统一下发设备消息服务 IJT808UnificationSendService](#send)
-
-#### [2.2.管理会话服务 IJT808SessionService](#session)
-
-#### [2.3.消息包计数服务 JT808AtomicCounterService 接口尚未实现](#counter)
+[WebApi接口服务](https://github.com/SmallChi/JT808DotNetty/blob/master/api/README.md)
### 3.集成业务消息处理程序
@@ -45,7 +41,7 @@
### 举个栗子1
-#### 1.实现业务消息处理程序JT808MsgIdHandlerBase
+#### 3.1.实现业务消息处理程序JT808MsgIdHandlerBase
```business Imp
public class JT808MsgIdCustomHandler : JT808MsgIdHandlerBase
@@ -66,18 +62,21 @@ public class JT808MsgIdCustomHandler : JT808MsgIdHandlerBase
}
```
-#### 2.自定义业务消息处理程序替换默认实现
-```
+#### 3.2.自定义业务消息处理程序替换默认实现
+
+``` handler
services.Replace(new ServiceDescriptor(typeof(JT808MsgIdHandlerBase), typeof(JT808MsgIdCustomHandler), ServiceLifetime.Singleton));
```
-#### 3.使用JT808 Host
+
+#### 3.3.使用JT808 Host
``` host
UseJT808Host()
```
-#### 4.完整示例
+#### 3.4.完整示例
+
``` demo
// 默认网关端口:808
// 默认webapi端口:828
@@ -103,159 +102,4 @@ static async Task Main(string[] args)
.UseJT808Host();
await serverHostBuilder.RunConsoleAsync();
}
-```
-
-## 提供WebApi接口服务(默认端口828)
-
-基地址:http://localhost:828/jt808api/
-
-数据格式:只支持Json格式
-
-#### 统一对象返回 JT808ResultDto\
-
-|属性|数据类型|参数说明|
-|:------:|:------:|:------|
-| Message| string| 消息描述|
-| Code| int| 状态码|
-| Data| T(泛型)| 数据|
-
-返回Code[状态码]说明:
-
-|状态码|说明|
-|:------:|:------:|
-| 200 | 返回成功 |
-| 201 | 内容为空 |
-| 404 | 没有该服务 |
-| 500 | 服务内部错误 |
-
-#### 统一下发设备消息接口
-
-请求地址:UnificationSend
-
-请求方式:POST
-
-请求参数:
-
-|属性|数据类型|参数说明|
-|:------:|:------:|:------|
-| TerminalPhoneNo| string| 设备终端号|
-| Data| byte[]| JT808 byte[]数组|
-
-返回数据:
-
-|属性|数据类型|参数说明|
-|:------:|:------:|:------|
-| Data| bool| 是否成功|
-
-返回结果:
-``` result1
-{
- "Message":"",
- "Code":200,
- "Data":true
-}
-```
-#### 会话服务接口
-
-##### 统一会话信息对象返回 JT808SessionInfoDto
-
-|属性|数据类型|参数说明|
-|:------:|:------:|:------|
-| ChannelId| string| 通道Id|
-| LastActiveTime| DateTime| 最后上线时间|
-| StartTime| DateTime| 上线时间|
-| TerminalPhoneNo|string| 终端手机号|
-| LoaclAddressIP| string| 本地ip地址|
-| WebApiPort| string| WebApi端口号|
-| RemoteAddressIP| string| 远程ip地址|
-
-##### 1.获取会话集合
-
-请求地址:Session/GetAll
-
-请求方式:GET
-
-返回数据:
-
-|属性|数据类型|参数说明|
-|:------:|:------:|:------|
-| Data| List\ | 实际会话信息集合 |
-
-返回结果:
-``` session1
-{
- "Message":"",
- "Code":200,
- "Data":[
- {
- "ChannelId":"eadad23",
- "LastActiveTime":"2018-11-27 20:00:00",
- "StartTime":"2018-11-25 20:00:00",
- "TerminalPhoneNo":"123456789012",
- "LoaclAddressIP":"127.0.0.1:808",
- "WebApiPort":828,
- "RemoteAddressIP":"127.0.0.1:11808"
- },{
- "ChannelId":"eadad23",
- "LastActiveTime":"2018-11-27 20:00:00",
- "StartTime":"2018-11-25 20:00:00",
- "TerminalPhoneNo":"123456789013",
- "LoaclAddressIP":"127.0.0.1:808",
- "WebApiPort":828,
- "RemoteAddressIP":"127.0.0.1:11808"
- }
- ]
-}
-```
-##### 2.通过通道Id移除对应会话
-
-请求地址:Session/RemoveByChannelId
-
-请求方式:POST
-
-请求参数:
-
-|属性|数据类型|参数说明|
-|:------:|:------:|:------|
-| channelId| string| 通道Id|
-
-返回数据:
-
-|属性|数据类型|参数说明|
-|:------:|:------:|:------|
-| Data| bool | 是否成功 |
-
-返回结果:
-``` session2
-{
- "Message":"",
- "Code":200,
- "Data":true
-}
-```
-##### 3.通过设备终端号移除对应会话
-
-请求地址:Session/RemoveByTerminalPhoneNo
-
-请求方式:POST
-
-请求参数:
-
-|属性|数据类型|参数说明|
-|:------:|:------:|:------|
-| terminalPhoneNo| string| 设备终端号|
-
-返回数据:
-
-|属性|数据类型|参数说明|
-|:------:|:------:|:------|
-| Data| bool | 是否成功
-
-返回结果:
-``` session3
-{
- "Message":"",
- "Code":200,
- "Data":true
-}
-```
+```
\ No newline at end of file
diff --git a/api/README.md b/api/README.md
new file mode 100644
index 0000000..3bc3590
--- /dev/null
+++ b/api/README.md
@@ -0,0 +1,384 @@
+# JT808 WebApi服务
+
+基地址:http://localhost:828/jt808api/
+
+数据格式:只支持Json格式
+
+默认端口:828
+
+## [统一下发设备消息服务](#send)
+
+## [管理会话服务](#session)
+
+## [原包分发器通道服务](#sourcepackage)
+
+## [转发地址过滤服务](#transmit)
+
+## [消息包计数服务](#counter)
+
+### 统一对象返回 JT808ResultDto\
+
+|属性|数据类型|参数说明|
+|:------:|:------:|:------|
+| Message| string| 消息描述|
+| Code| int| 状态码|
+| Data| T(泛型)| 数据|
+
+返回Code[状态码]说明:
+
+|状态码|说明|
+|:------:|:------:|
+| 200 | 返回成功 |
+| 201 | 内容为空 |
+| 404 | 没有该服务 |
+| 500 | 服务内部错误 |
+
+### 统一下发设备消息接口
+
+请求地址:UnificationSend
+
+请求方式:POST
+
+请求参数:
+
+|属性|数据类型|参数说明|
+|------|:------:|:------|
+| TerminalPhoneNo| string| 设备终端号|
+| Data| byte[]| JT808 byte[]数组|
+
+返回数据:
+
+|属性|数据类型|参数说明|
+|:------:|:------:|:------|
+| Data| bool| 是否成功|
+
+返回结果:
+
+``` result1
+{
+ "Message":"",
+ "Code":200,
+ "Data":true
+}
+```
+
+### 会话服务接口
+
+#### 统一会话信息对象返回 JT808SessionInfoDto
+
+|属性|数据类型|参数说明|
+|------|------|------|
+| ChannelId| string| 通道Id|
+| LastActiveTime| DateTime| 最后上线时间|
+| StartTime| DateTime| 上线时间|
+| TerminalPhoneNo|string| 终端手机号|
+| LoaclAddressIP| string| 本地ip地址|
+| WebApiPort| string| WebApi端口号|
+| RemoteAddressIP| string| 远程ip地址|
+
+#### 1.获取会话集合
+
+请求地址:Session/GetAll
+
+请求方式:GET
+
+返回数据:
+
+|属性|数据类型|参数说明|
+|:------:|:------:|:------|
+| Data| List\ | 实际会话信息集合 |
+
+返回结果:
+
+``` session1
+{
+ "Message":"",
+ "Code":200,
+ "Data":[
+ {
+ "ChannelId":"eadad23",
+ "LastActiveTime":"2018-11-27 20:00:00",
+ "StartTime":"2018-11-25 20:00:00",
+ "TerminalPhoneNo":"123456789012",
+ "LoaclAddressIP":"127.0.0.1:808",
+ "WebApiPort":828,
+ "RemoteAddressIP":"127.0.0.1:11808"
+ },{
+ "ChannelId":"eadad23",
+ "LastActiveTime":"2018-11-27 20:00:00",
+ "StartTime":"2018-11-25 20:00:00",
+ "TerminalPhoneNo":"123456789013",
+ "LoaclAddressIP":"127.0.0.1:808",
+ "WebApiPort":828,
+ "RemoteAddressIP":"127.0.0.1:11808"
+ }
+ ]
+}
+```
+
+#### 2.通过通道Id移除对应会话
+
+请求地址:Session/RemoveByChannelId
+
+请求方式:POST
+
+请求参数:
+
+|属性|数据类型|参数说明|
+|:------:|:------:|:------|
+| channelId| string| 通道Id|
+
+返回数据:
+
+|属性|数据类型|参数说明|
+|:------:|:------:|:------|
+| Data| bool | 是否成功 |
+
+返回结果:
+
+``` session2
+{
+ "Message":"",
+ "Code":200,
+ "Data":true
+}
+```
+
+#### 3.通过设备终端号移除对应会话
+
+请求地址:Session/RemoveByTerminalPhoneNo
+
+请求方式:POST
+
+请求参数:
+
+|属性|数据类型|参数说明|
+|:------:|:------:|:------|
+| terminalPhoneNo| string| 设备终端号|
+
+返回数据:
+
+|属性|数据类型|参数说明|
+|:------:|:------:|:------|
+| Data| bool | 是否成功
+
+返回结果:
+
+``` session3
+{
+ "Message":"",
+ "Code":200,
+ "Data":true
+}
+```
+
+### 原包分发器通道服务
+
+#### 1.添加原包转发地址
+
+请求地址:SourcePackage/Add
+
+请求方式:POST
+
+请求参数:
+
+|属性|数据类型|参数说明|
+|:------:|:------:|:------|
+| Host| string| ip地址|
+| Port| int| 端口号|
+
+返回数据:
+
+|属性|数据类型|参数说明|
+|:------:|:------:|:------|
+| Data| bool | 是否成功
+
+返回结果:
+
+``` sp1
+{
+ "Message":"",
+ "Code":200,
+ "Data":true
+}
+```
+
+#### 2.删除原包转发地址(不能删除在网关服务器配置文件配的地址)
+
+请求地址:SourcePackage/Remove
+
+请求方式:POST
+
+请求参数:
+
+|属性|数据类型|参数说明|
+|:------:|:------:|:------|
+| Host| string| ip地址|
+| Port| int| 端口号|
+
+返回数据:
+
+|属性|数据类型|参数说明|
+|:------:|:------:|:------|
+| Data| bool | 是否成功|
+
+返回结果:
+
+``` sp2
+{
+ "Message":"",
+ "Code":200,
+ "Data":true
+}
+```
+
+#### 3.获取原包信息集合
+
+请求地址:SourcePackage/GetAll
+
+请求方式:GET
+
+返回数据:
+
+|属性|数据类型|参数说明|
+|------|:------:|:------|
+| RemoteAddress| string | 远程ip地址|
+| LocalAddress| string | 本地ip地址|
+| Registered| bool | 通道是否注册|
+| Active| bool | 通道是否激活|
+| Open| bool | 通道是否打开|
+
+返回结果:
+
+``` sp3
+{
+ "Message":"",
+ "Code":200,
+ "Data":[
+ {
+ "RemoteAddress":"127.0.0.1:6665",
+ "LocalAddress":"127.0.0.1:6664",
+ "Registered":true,
+ "Active":true,
+ "Open":true
+ },{
+ "RemoteAddress":"127.0.0.1:6667",
+ "LocalAddress":"127.0.0.1:6666",
+ "Registered":true,
+ "Active":true,
+ "Open":true
+ }
+ ]
+}
+```
+
+### 转发地址过滤服务
+
+#### 1.添加转发过滤地址
+
+请求地址:Transmit/Add
+
+请求方式:POST
+
+请求参数:
+
+|属性|数据类型|参数说明|
+|:------:|:------:|:------|
+| Host| string| ip地址|
+| Port| int| 端口号|
+
+返回数据:
+
+|属性|数据类型|参数说明|
+|:------:|:------:|:------|
+| Data| bool | 是否成功
+
+返回结果:
+
+``` tr1
+{
+ "Message":"",
+ "Code":200,
+ "Data":true
+}
+```
+
+#### 2.删除转发过滤地址(不能删除在网关服务器配置文件配的地址)
+
+请求地址:Transmit/Remove
+
+请求方式:POST
+
+请求参数:
+
+|属性|数据类型|参数说明|
+|:------:|:------:|:------|
+| Host| string| ip地址|
+| Port| int| 端口号|
+
+返回数据:
+
+|属性|数据类型|参数说明|
+|:------:|:------:|:------|
+| Data| bool | 是否成功|
+
+返回结果:
+
+``` tr2
+{
+ "Message":"",
+ "Code":200,
+ "Data":true
+}
+```
+
+#### 3.获取转发过滤地址信息集合
+
+请求地址:Transmit/GetAll
+
+请求方式:GET
+
+返回数据:
+
+|属性|数据类型|参数说明|
+|------|:------:|:------|
+| Data| List\ | 远程ip地址|
+
+返回结果:
+
+``` tr3
+{
+ "Message":"",
+ "Code":200,
+ "Data":[
+ "127.0.0.1:6665",
+ "127.0.0.1:6667"
+ ]
+}
+```
+
+### 计数服务接口
+
+请求地址:GetAtomicCounter
+
+请求方式:GET
+
+返回数据:
+
+|属性|数据类型|参数说明|
+|------|:------:|:------|
+| MsgSuccessCount| long| 消息包成功数|
+| MsgFailCount| long| 消息包失败数|
+
+返回结果:
+
+``` counter
+{
+ "Message":"",
+ "Code":200,
+ "Data":{
+ "MsgSuccessCount":10000,
+ "MsgFailCount":0
+ }
+}
+```
\ No newline at end of file
diff --git a/src/JT808.DotNetty.Test/Internal/JT808RemoteAddressTransmitConfigurationServiceTest.cs b/src/JT808.DotNetty.Test/Internal/JT808TransmitAddressFilterServiceTest.cs
similarity index 66%
rename from src/JT808.DotNetty.Test/Internal/JT808RemoteAddressTransmitConfigurationServiceTest.cs
rename to src/JT808.DotNetty.Test/Internal/JT808TransmitAddressFilterServiceTest.cs
index e6665b2..190bf58 100644
--- a/src/JT808.DotNetty.Test/Internal/JT808RemoteAddressTransmitConfigurationServiceTest.cs
+++ b/src/JT808.DotNetty.Test/Internal/JT808TransmitAddressFilterServiceTest.cs
@@ -12,11 +12,11 @@ using Xunit;
namespace JT808.DotNetty.Test.Internal
{
- public class JT808RemoteAddressTransmitConfigurationServiceTest
+ public class JT808TransmitAddressFilterServiceTest
{
- private JT808RemoteAddressTransmitConfigurationService jT808RemoteAddressTransmitConfigurationService;
+ private JT808TransmitAddressFilterService jT808TransmitAddressFilterService;
- public JT808RemoteAddressTransmitConfigurationServiceTest()
+ public JT808TransmitAddressFilterServiceTest()
{
var serverHostBuilder = new HostBuilder()
.ConfigureAppConfiguration((hostingContext, config) =>
@@ -29,26 +29,26 @@ namespace JT808.DotNetty.Test.Internal
services.AddSingleton();
services.AddSingleton(typeof(ILogger<>), typeof(Logger<>));
services.Configure(hostContext.Configuration.GetSection("JT808Configuration"));
- services.AddSingleton();
+ services.AddSingleton();
});
var serviceProvider = serverHostBuilder.Build().Services;
- jT808RemoteAddressTransmitConfigurationService = serviceProvider.GetService();
- jT808RemoteAddressTransmitConfigurationService.Add(new Dtos.JT808IPAddressDto
+ jT808TransmitAddressFilterService = serviceProvider.GetService();
+ jT808TransmitAddressFilterService.Add(new Dtos.JT808IPAddressDto
{
Host = "127.0.0.1",
Port = 12345
});
- jT808RemoteAddressTransmitConfigurationService.Add(new Dtos.JT808IPAddressDto
+ jT808TransmitAddressFilterService.Add(new Dtos.JT808IPAddressDto
{
Host = "127.0.0.1",
Port = 12346
});
- jT808RemoteAddressTransmitConfigurationService.Add(new Dtos.JT808IPAddressDto
+ jT808TransmitAddressFilterService.Add(new Dtos.JT808IPAddressDto
{
Host = "127.0.0.1",
Port = 12347
});
- jT808RemoteAddressTransmitConfigurationService.Add(new Dtos.JT808IPAddressDto
+ jT808TransmitAddressFilterService.Add(new Dtos.JT808IPAddressDto
{
Host = "127.0.0.1",
Port = 12348
@@ -58,7 +58,7 @@ namespace JT808.DotNetty.Test.Internal
[Fact]
public void Test1()
{
- Assert.True(jT808RemoteAddressTransmitConfigurationService.ContainsKey(new Dtos.JT808IPAddressDto
+ Assert.True(jT808TransmitAddressFilterService.ContainsKey(new Dtos.JT808IPAddressDto
{
Host = "127.0.0.1",
Port = 12348
@@ -68,7 +68,7 @@ namespace JT808.DotNetty.Test.Internal
[Fact]
public void Test2()
{
- var result = jT808RemoteAddressTransmitConfigurationService.GetAll();
+ var result = jT808TransmitAddressFilterService.GetAll();
}
[Fact]
@@ -79,10 +79,10 @@ namespace JT808.DotNetty.Test.Internal
Host = "127.0.0.1",
Port = 12349
};
- var result1= jT808RemoteAddressTransmitConfigurationService.Add(ip1);
+ var result1= jT808TransmitAddressFilterService.Add(ip1);
Assert.Equal(JT808ResultCode.Ok, result1.Code);
Assert.True(result1.Data);
- var result2 = jT808RemoteAddressTransmitConfigurationService.Remove(ip1);
+ var result2 = jT808TransmitAddressFilterService.Remove(ip1);
Assert.Equal(JT808ResultCode.Ok, result2.Code);
Assert.True(result2.Data);
}
@@ -95,7 +95,7 @@ namespace JT808.DotNetty.Test.Internal
Host = "127.0.0.1",
Port = 6561
};
- var result2 = jT808RemoteAddressTransmitConfigurationService.Remove(configIp);
+ var result2 = jT808TransmitAddressFilterService.Remove(configIp);
Assert.Equal(JT808ResultCode.Ok, result2.Code);
Assert.False(result2.Data);
Assert.Equal("不能删除服务器配置的地址", result2.Message);
diff --git a/src/JT808.DotNetty/Handlers/JT808ServerHandler.cs b/src/JT808.DotNetty/Handlers/JT808ServerHandler.cs
index 18ae0a0..e3ae53f 100644
--- a/src/JT808.DotNetty/Handlers/JT808ServerHandler.cs
+++ b/src/JT808.DotNetty/Handlers/JT808ServerHandler.cs
@@ -18,14 +18,14 @@ namespace JT808.DotNetty.Handlers
private readonly JT808SessionManager jT808SessionManager;
- private readonly JT808RemoteAddressTransmitConfigurationService jT808RemoteAddressTransmitConfigurationService;
+ private readonly JT808TransmitAddressFilterService jT808TransmitAddressFilterService;
public JT808ServerHandler(
- JT808RemoteAddressTransmitConfigurationService jT808RemoteAddressTransmitConfigurationService,
+ JT808TransmitAddressFilterService jT808TransmitAddressFilterService,
JT808MsgIdHandlerBase handler,
JT808SessionManager jT808SessionManager)
{
- this.jT808RemoteAddressTransmitConfigurationService = jT808RemoteAddressTransmitConfigurationService;
+ this.jT808TransmitAddressFilterService = jT808TransmitAddressFilterService;
this.handler = handler;
this.jT808SessionManager = jT808SessionManager;
}
@@ -42,7 +42,7 @@ namespace JT808.DotNetty.Handlers
JT808Response jT808Package = handlerFunc(new JT808Request(msg));
if (jT808Package != null)
{
- if (!jT808RemoteAddressTransmitConfigurationService.ContainsKey(ctx.Channel.RemoteAddress))
+ if (!jT808TransmitAddressFilterService.ContainsKey(ctx.Channel.RemoteAddress))
{
ctx.WriteAndFlushAsync(Unpooled.WrappedBuffer(JT808Serializer.Serialize(jT808Package.Package, jT808Package.MinBufferSize)));
}
diff --git a/src/JT808.DotNetty/Internal/JT808RemoteAddressTransmitConfigurationService.cs b/src/JT808.DotNetty/Internal/JT808TransmitAddressFilterService.cs
similarity index 95%
rename from src/JT808.DotNetty/Internal/JT808RemoteAddressTransmitConfigurationService.cs
rename to src/JT808.DotNetty/Internal/JT808TransmitAddressFilterService.cs
index a855162..8390ed2 100644
--- a/src/JT808.DotNetty/Internal/JT808RemoteAddressTransmitConfigurationService.cs
+++ b/src/JT808.DotNetty/Internal/JT808TransmitAddressFilterService.cs
@@ -11,14 +11,14 @@ using System.Text;
namespace JT808.DotNetty.Internal
{
///
- /// JT808远程地址转发配置服务
+ /// JT808转发地址过滤服务
/// 按照808的消息,有些请求必须要应答,但是转发可以不需要有应答可以节省部分资源包括:
// 1.消息的序列化
// 2.消息的下发
// 都有一定的性能损耗,那么不需要判断写超时 IdleState.WriterIdle
// 就跟神兽貔貅一样。。。
///
- public class JT808RemoteAddressTransmitConfigurationService : IDisposable
+ public class JT808TransmitAddressFilterService : IDisposable
{
private readonly IOptionsMonitor jT808ConfigurationOptionsMonitor;
@@ -26,7 +26,7 @@ namespace JT808.DotNetty.Internal
private IDisposable jT808ConfigurationOptionsMonitorDisposable;
- public JT808RemoteAddressTransmitConfigurationService(
+ public JT808TransmitAddressFilterService(
IOptionsMonitor jT808ConfigurationOptionsMonitor)
{
this.jT808ConfigurationOptionsMonitor = jT808ConfigurationOptionsMonitor;
diff --git a/src/JT808.DotNetty/Internal/JT808WebAPIService.cs b/src/JT808.DotNetty/Internal/JT808WebAPIService.cs
index 762e105..102fe07 100644
--- a/src/JT808.DotNetty/Internal/JT808WebAPIService.cs
+++ b/src/JT808.DotNetty/Internal/JT808WebAPIService.cs
@@ -21,6 +21,8 @@ namespace JT808.DotNetty.Internal
private const string sourcePackagePrefix = "SourcePackage";
+ private const string transmitPrefix = "Transmit";
+
private readonly IJT808SessionService jT808SessionService;
private readonly IJT808UnificationSendService jT808UnificationSendService;
@@ -29,17 +31,21 @@ namespace JT808.DotNetty.Internal
private readonly JT808SourcePackageChannelService jT808SourcePackageChannelService;
+ private readonly JT808TransmitAddressFilterService jT808TransmitAddressFilterService;
+
///
/// 初始化消息处理业务
///
public JT808WebAPIService(
JT808AtomicCounterService jT808AtomicCounterService,
JT808SourcePackageChannelService jT808SourcePackageChannelService,
+ JT808TransmitAddressFilterService jT808TransmitAddressFilterService,
IJT808SessionService jT808SessionService,
IJT808UnificationSendService jT808UnificationSendService)
{
this.jT808AtomicCounterService = jT808AtomicCounterService;
this.jT808SourcePackageChannelService = jT808SourcePackageChannelService;
+ this.jT808TransmitAddressFilterService = jT808TransmitAddressFilterService;
this.jT808SessionService = jT808SessionService;
this.jT808UnificationSendService = jT808UnificationSendService;
HandlerDict = new Dictionary>
@@ -51,7 +57,10 @@ namespace JT808.DotNetty.Internal
{$"{RouteTablePrefix}/GetAtomicCounter", GetAtomicCounter},
{$"{RouteTablePrefix}/{sourcePackagePrefix}/Add", AddSourcePackageAddress},
{$"{RouteTablePrefix}/{sourcePackagePrefix}/Remove", RemoveSourcePackageAddress},
- {$"{RouteTablePrefix}/{sourcePackagePrefix}/GetAll", GetSourcePackageAll}
+ {$"{RouteTablePrefix}/{sourcePackagePrefix}/GetAll", GetSourcePackageAll},
+ {$"{RouteTablePrefix}/{transmitPrefix}/Add", AddTransmitAddress},
+ {$"{RouteTablePrefix}/{transmitPrefix}/Remove", RemoveTransmitAddress},
+ {$"{RouteTablePrefix}/{transmitPrefix}/GetAll", GetTransmitAll},
};
}
@@ -169,6 +178,46 @@ namespace JT808.DotNetty.Internal
return CreateJT808HttpResponse(jT808SourcePackageChannelService.GetAll());
}
+ ///
+ /// 添加转发过滤地址
+ ///
+ ///
+ ///
+ public JT808HttpResponse AddTransmitAddress(JT808HttpRequest request)
+ {
+ if (string.IsNullOrEmpty(request.Json))
+ {
+ return EmptyHttpResponse();
+ }
+ JT808IPAddressDto jT808IPAddressDto = JsonConvert.DeserializeObject(request.Json);
+ return CreateJT808HttpResponse(jT808TransmitAddressFilterService.Add(jT808IPAddressDto));
+ }
+
+ ///
+ /// 删除转发过滤地址(不能删除在网关服务器配置文件配的地址)
+ ///
+ ///
+ ///
+ public JT808HttpResponse RemoveTransmitAddress(JT808HttpRequest request)
+ {
+ if (string.IsNullOrEmpty(request.Json))
+ {
+ return EmptyHttpResponse();
+ }
+ JT808IPAddressDto jT808IPAddressDto = JsonConvert.DeserializeObject(request.Json);
+ return CreateJT808HttpResponse(jT808TransmitAddressFilterService.Remove(jT808IPAddressDto));
+ }
+
+ ///
+ /// 获取转发过滤地址信息集合
+ ///
+ ///
+ ///
+ public JT808HttpResponse GetTransmitAll(JT808HttpRequest request)
+ {
+ return CreateJT808HttpResponse(jT808TransmitAddressFilterService.GetAll());
+ }
+
private JT808HttpResponse CreateJT808HttpResponse(dynamic dynamicObject)
{
byte[] data = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(dynamicObject));
diff --git a/src/JT808.DotNetty/JT808DotnettyExtensions.cs b/src/JT808.DotNetty/JT808DotnettyExtensions.cs
index 0a8868c..6bec490 100644
--- a/src/JT808.DotNetty/JT808DotnettyExtensions.cs
+++ b/src/JT808.DotNetty/JT808DotnettyExtensions.cs
@@ -37,7 +37,7 @@ namespace JT808.DotNetty
services.Configure(hostContext.Configuration.GetSection("JT808Configuration"));
services.TryAddSingleton();
services.TryAddSingleton();
- services.TryAddSingleton();
+ services.TryAddSingleton();
services.TryAddSingleton();
services.TryAddSingleton();
services.TryAddSingleton();