@@ -1,33 +0,0 @@ | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
namespace JT808.DotNetty.Abstractions.Dtos | |||
{ | |||
/// <summary> | |||
/// 原包通道信息 | |||
/// </summary> | |||
public class JT808SourcePackageChannelInfoDto | |||
{ | |||
/// <summary> | |||
/// 远程地址 | |||
/// </summary> | |||
public string RemoteAddress { get; set; } | |||
/// <summary> | |||
/// 本地地址 | |||
/// </summary> | |||
public string LocalAddress { get; set; } | |||
/// <summary> | |||
/// 是否注册 | |||
/// </summary> | |||
public bool Registered { get; set; } | |||
/// <summary> | |||
/// 是否活动 | |||
/// </summary> | |||
public bool Active { get; set; } | |||
/// <summary> | |||
/// 是否打开 | |||
/// </summary> | |||
public bool Open { get; set; } | |||
} | |||
} |
@@ -1,8 +1,20 @@ | |||
<Project Sdk="Microsoft.NET.Sdk"> | |||
<Project Sdk="Microsoft.NET.Sdk"> | |||
<PropertyGroup> | |||
<TargetFramework>netstandard2.0</TargetFramework> | |||
<LangVersion>7.1</LangVersion> | |||
<Copyright>Copyright 2018.</Copyright> | |||
<Authors>SmallChi</Authors> | |||
<PackageId>JT808.DotNetty.Abstractions</PackageId> | |||
<Product>JT808.DotNetty.Abstractions</Product> | |||
<Description>基于DotNetty实现的JT808DotNetty的抽象库</Description> | |||
<PackageReleaseNotes>基于DotNetty实现的JT808DotNetty的抽象库</PackageReleaseNotes> | |||
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance> | |||
<RepositoryUrl>https://github.com/SmallChi/JT808DotNetty</RepositoryUrl> | |||
<PackageProjectUrl>https://github.com/SmallChi/JT808DotNetty</PackageProjectUrl> | |||
<PackageLicenseUrl>https://github.com/SmallChi/JT808DotNetty/blob/master/LICENSE</PackageLicenseUrl> | |||
<GeneratePackageOnBuild>true</GeneratePackageOnBuild> | |||
<Version>1.0.0</Version> | |||
</PropertyGroup> | |||
</Project> |
@@ -3,6 +3,18 @@ | |||
<PropertyGroup> | |||
<TargetFramework>netstandard2.0</TargetFramework> | |||
<LangVersion>7.1</LangVersion> | |||
<Copyright>Copyright 2018.</Copyright> | |||
<Authors>SmallChi</Authors> | |||
<PackageId>JT808.DotNetty.Codecs</PackageId> | |||
<Product>JT808.DotNetty.Codecs</Product> | |||
<Description>基于DotNetty实现的JT808DotNetty的编解码库</Description> | |||
<PackageReleaseNotes>基于DotNetty实现的JT808DotNetty的编解码库</PackageReleaseNotes> | |||
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance> | |||
<RepositoryUrl>https://github.com/SmallChi/JT808DotNetty</RepositoryUrl> | |||
<PackageProjectUrl>https://github.com/SmallChi/JT808DotNetty</PackageProjectUrl> | |||
<PackageLicenseUrl>https://github.com/SmallChi/JT808DotNetty/blob/master/LICENSE</PackageLicenseUrl> | |||
<GeneratePackageOnBuild>true</GeneratePackageOnBuild> | |||
<Version>1.0.0</Version> | |||
</PropertyGroup> | |||
<ItemGroup> | |||
<PackageReference Include="DotNetty.Codecs" Version="0.6.0" /> | |||
@@ -5,7 +5,7 @@ namespace JT808.DotNetty.Core.Interfaces | |||
/// <summary> | |||
/// JT808基于tcp的统一下发命令服务 | |||
/// </summary> | |||
internal interface IJT808UnificationTcpSendService | |||
public interface IJT808UnificationTcpSendService | |||
{ | |||
JT808ResultDto<bool> Send(string terminalPhoneNo, byte[] data); | |||
} | |||
@@ -5,7 +5,7 @@ namespace JT808.DotNetty.Core.Interfaces | |||
/// <summary> | |||
/// JT808基于udp的统一下发命令服务 | |||
/// </summary> | |||
internal interface IJT808UnificationUdpSendService | |||
public interface IJT808UnificationUdpSendService | |||
{ | |||
JT808ResultDto<bool> Send(string terminalPhoneNo, byte[] data); | |||
} | |||
@@ -3,6 +3,18 @@ | |||
<PropertyGroup> | |||
<TargetFramework>netstandard2.0</TargetFramework> | |||
<LangVersion>7.1</LangVersion> | |||
<Copyright>Copyright 2018.</Copyright> | |||
<Authors>SmallChi</Authors> | |||
<PackageId>JT808.DotNetty.Core</PackageId> | |||
<Product>JT808.DotNetty.Core</Product> | |||
<Description>基于DotNetty实现的JT808DotNetty的核心库</Description> | |||
<PackageReleaseNotes>基于DotNetty实现的JT808DotNetty的核心库</PackageReleaseNotes> | |||
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance> | |||
<RepositoryUrl>https://github.com/SmallChi/JT808DotNetty</RepositoryUrl> | |||
<PackageProjectUrl>https://github.com/SmallChi/JT808DotNetty</PackageProjectUrl> | |||
<PackageLicenseUrl>https://github.com/SmallChi/JT808DotNetty/blob/master/LICENSE</PackageLicenseUrl> | |||
<GeneratePackageOnBuild>true</GeneratePackageOnBuild> | |||
<Version>1.0.0</Version> | |||
</PropertyGroup> | |||
<ItemGroup> | |||
@@ -2,6 +2,19 @@ | |||
<PropertyGroup> | |||
<TargetFramework>netstandard2.0</TargetFramework> | |||
<LangVersion>7.1</LangVersion> | |||
<Copyright>Copyright 2018.</Copyright> | |||
<Authors>SmallChi</Authors> | |||
<PackageId>JT808.DotNetty.Tcp</PackageId> | |||
<Product>JT808.DotNetty.Tcp</Product> | |||
<Description>基于DotNetty实现的JT808DotNetty的Tcp服务</Description> | |||
<PackageReleaseNotes>基于DotNetty实现的JT808DotNetty的Tcp服务</PackageReleaseNotes> | |||
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance> | |||
<RepositoryUrl>https://github.com/SmallChi/JT808DotNetty</RepositoryUrl> | |||
<PackageProjectUrl>https://github.com/SmallChi/JT808DotNetty</PackageProjectUrl> | |||
<PackageLicenseUrl>https://github.com/SmallChi/JT808DotNetty/blob/master/LICENSE</PackageLicenseUrl> | |||
<GeneratePackageOnBuild>true</GeneratePackageOnBuild> | |||
<Version>1.0.0</Version> | |||
</PropertyGroup> | |||
<ItemGroup> | |||
<PackageReference Include="DotNetty.Buffers" Version="0.6.0" /> | |||
@@ -51,6 +51,11 @@ namespace JT808.DotNetty.Udp.Handlers | |||
//解析具体的消息体,具体调用JT808Serializer.Deserialize<T> | |||
JT808HeaderPackage jT808HeaderPackage = JT808Serializer.Deserialize<JT808HeaderPackage>(msg.Buffer); | |||
jT808UdpAtomicCounterService.MsgSuccessIncrement(); | |||
jT808UdpSessionManager.TryAdd(new JT808UdpSession { | |||
Channel= ctx.Channel, | |||
Sender= msg.Sender, | |||
TerminalPhoneNo= jT808HeaderPackage.Header.TerminalPhoneNo | |||
}); | |||
if (logger.IsEnabled(LogLevel.Debug)) | |||
{ | |||
logger.LogDebug("accept package success count<<<" + jT808UdpAtomicCounterService.MsgSuccessCount.ToString()); | |||
@@ -1,8 +1,20 @@ | |||
<Project Sdk="Microsoft.NET.Sdk"> | |||
<Project Sdk="Microsoft.NET.Sdk"> | |||
<PropertyGroup> | |||
<TargetFramework>netstandard2.0</TargetFramework> | |||
<LangVersion>7.1</LangVersion> | |||
<Copyright>Copyright 2018.</Copyright> | |||
<Authors>SmallChi</Authors> | |||
<PackageId>JT808.DotNetty.Udp</PackageId> | |||
<Product>JT808.DotNetty.Udp</Product> | |||
<Description>基于DotNetty实现的JT808DotNetty的Udp服务</Description> | |||
<PackageReleaseNotes>基于DotNetty实现的JT808DotNetty的Udp服务</PackageReleaseNotes> | |||
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance> | |||
<RepositoryUrl>https://github.com/SmallChi/JT808DotNetty</RepositoryUrl> | |||
<PackageProjectUrl>https://github.com/SmallChi/JT808DotNetty</PackageProjectUrl> | |||
<PackageLicenseUrl>https://github.com/SmallChi/JT808DotNetty/blob/master/LICENSE</PackageLicenseUrl> | |||
<GeneratePackageOnBuild>true</GeneratePackageOnBuild> | |||
<Version>1.0.0</Version> | |||
</PropertyGroup> | |||
<ItemGroup> | |||
@@ -1,27 +1,236 @@ | |||
using JT808.DotNetty.Core.Handlers; | |||
using JT808.DotNetty.Abstractions.Dtos; | |||
using JT808.DotNetty.Core.Handlers; | |||
using JT808.DotNetty.Core.Interfaces; | |||
using JT808.DotNetty.Core.Metadata; | |||
using JT808.DotNetty.Core.Services; | |||
using Newtonsoft.Json; | |||
namespace JT808.DotNetty.WebApi.Handlers | |||
{ | |||
/// <summary> | |||
/// 默认消息处理业务实现 | |||
/// </summary> | |||
internal class JT808MsgIdDefaultWebApiHandler : JT808MsgIdHttpHandlerBase | |||
public class JT808MsgIdDefaultWebApiHandler : JT808MsgIdHttpHandlerBase | |||
{ | |||
private const string sessionRoutePrefix = "Session"; | |||
private const string sourcePackagePrefix = "SourcePackage"; | |||
private const string transmitPrefix = "Transmit"; | |||
//1.TCP一套注入 | |||
//2.UDP一套注入 | |||
//3.统一的一套注入 | |||
private readonly JT808TcpAtomicCounterService jT808TcpAtomicCounterService; | |||
private readonly JT808UdpAtomicCounterService jT808UdpAtomicCounterService; | |||
private readonly JT808TransmitAddressFilterService jT808TransmitAddressFilterService; | |||
private readonly IJT808TcpSessionService jT808TcpSessionService; | |||
private readonly IJT808UnificationTcpSendService jT808UnificationTcpSendService; | |||
private readonly IJT808UnificationUdpSendService jT808UnificationUdpSendService; | |||
/// <summary> | |||
/// TCP一套注入 | |||
/// </summary> | |||
/// <param name="jT808TcpAtomicCounterService"></param> | |||
public JT808MsgIdDefaultWebApiHandler( | |||
IJT808UnificationTcpSendService jT808UnificationTcpSendService, | |||
IJT808TcpSessionService jT808TcpSessionService, | |||
JT808TransmitAddressFilterService jT808TransmitAddressFilterService, | |||
JT808TcpAtomicCounterService jT808TcpAtomicCounterService | |||
) | |||
{ | |||
this.jT808UnificationTcpSendService = jT808UnificationTcpSendService; | |||
this.jT808TcpSessionService = jT808TcpSessionService; | |||
this.jT808TransmitAddressFilterService = jT808TransmitAddressFilterService; | |||
this.jT808TcpAtomicCounterService = jT808TcpAtomicCounterService; | |||
InitTcpRoute(); | |||
} | |||
/// <summary> | |||
/// UDP一套注入 | |||
/// </summary> | |||
/// <param name="jT808UdpAtomicCounterService"></param> | |||
public JT808MsgIdDefaultWebApiHandler( | |||
IJT808UnificationUdpSendService jT808UnificationUdpSendService, | |||
JT808UdpAtomicCounterService jT808UdpAtomicCounterService | |||
) | |||
{ | |||
this.jT808UnificationUdpSendService = jT808UnificationUdpSendService; | |||
this.jT808UdpAtomicCounterService = jT808UdpAtomicCounterService; | |||
InitUdpRoute(); | |||
} | |||
/// <summary> | |||
/// 统一的一套注入 | |||
/// </summary> | |||
/// <param name="jT808TcpAtomicCounterService"></param> | |||
/// <param name="jT808UdpAtomicCounterService"></param> | |||
public JT808MsgIdDefaultWebApiHandler( | |||
IJT808UnificationTcpSendService jT808UnificationTcpSendService, | |||
IJT808UnificationUdpSendService jT808UnificationUdpSendService, | |||
IJT808TcpSessionService jT808TcpSessionService, | |||
JT808TransmitAddressFilterService jT808TransmitAddressFilterService, | |||
JT808TcpAtomicCounterService jT808TcpAtomicCounterService, | |||
JT808UdpAtomicCounterService jT808UdpAtomicCounterService | |||
) | |||
{ | |||
this.jT808UnificationTcpSendService = jT808UnificationTcpSendService; | |||
this.jT808UnificationUdpSendService = jT808UnificationUdpSendService; | |||
this.jT808TcpSessionService = jT808TcpSessionService; | |||
this.jT808TransmitAddressFilterService = jT808TransmitAddressFilterService; | |||
this.jT808TcpAtomicCounterService = jT808TcpAtomicCounterService; | |||
this.jT808UdpAtomicCounterService = jT808UdpAtomicCounterService; | |||
InitTcpRoute(); | |||
InitUdpRoute(); | |||
} | |||
/// <summary> | |||
/// 会话服务集合 | |||
/// </summary> | |||
/// <param name="request"></param> | |||
/// <returns></returns> | |||
public JT808HttpResponse GetSessionAll(JT808HttpRequest request) | |||
{ | |||
var result = jT808TcpSessionService.GetAll(); | |||
return CreateJT808HttpResponse(result); | |||
} | |||
/// <summary> | |||
/// 会话服务-通过设备终端号移除对应会话 | |||
/// </summary> | |||
/// <param name="request"></param> | |||
/// <returns></returns> | |||
public JT808HttpResponse RemoveByTerminalPhoneNo(JT808HttpRequest request) | |||
{ | |||
if (string.IsNullOrEmpty(request.Json)) | |||
{ | |||
return EmptyHttpResponse(); | |||
} | |||
var result = jT808TcpSessionService.RemoveByTerminalPhoneNo(request.Json); | |||
return CreateJT808HttpResponse(result); | |||
} | |||
/// <summary> | |||
/// 添加转发过滤地址 | |||
/// </summary> | |||
/// <param name="request"></param> | |||
/// <returns></returns> | |||
public JT808HttpResponse AddTransmitAddress(JT808HttpRequest request) | |||
{ | |||
if (string.IsNullOrEmpty(request.Json)) | |||
{ | |||
return EmptyHttpResponse(); | |||
} | |||
JT808IPAddressDto jT808IPAddressDto = JsonConvert.DeserializeObject<JT808IPAddressDto>(request.Json); | |||
return CreateJT808HttpResponse(jT808TransmitAddressFilterService.Add(jT808IPAddressDto)); | |||
} | |||
/// <summary> | |||
/// 删除转发过滤地址(不能删除在网关服务器配置文件配的地址) | |||
/// </summary> | |||
/// <param name="request"></param> | |||
/// <returns></returns> | |||
public JT808HttpResponse RemoveTransmitAddress(JT808HttpRequest request) | |||
{ | |||
if (string.IsNullOrEmpty(request.Json)) | |||
{ | |||
return EmptyHttpResponse(); | |||
} | |||
JT808IPAddressDto jT808IPAddressDto = JsonConvert.DeserializeObject<JT808IPAddressDto>(request.Json); | |||
return CreateJT808HttpResponse(jT808TransmitAddressFilterService.Remove(jT808IPAddressDto)); | |||
} | |||
/// <summary> | |||
/// 获取转发过滤地址信息集合 | |||
/// </summary> | |||
/// <param name="request"></param> | |||
/// <returns></returns> | |||
public JT808HttpResponse GetTransmitAll(JT808HttpRequest request) | |||
{ | |||
return CreateJT808HttpResponse(jT808TransmitAddressFilterService.GetAll()); | |||
} | |||
/// <summary> | |||
/// 获取Tcp包计数器 | |||
/// </summary> | |||
/// <param name="request"></param> | |||
/// <returns></returns> | |||
public JT808HttpResponse GetTcpAtomicCounter(JT808HttpRequest request) | |||
{ | |||
JT808AtomicCounterDto jT808AtomicCounterDto = new JT808AtomicCounterDto(); | |||
jT808AtomicCounterDto.MsgFailCount = jT808TcpAtomicCounterService.MsgFailCount; | |||
jT808AtomicCounterDto.MsgSuccessCount = jT808TcpAtomicCounterService.MsgSuccessCount; | |||
return CreateJT808HttpResponse(new JT808ResultDto<JT808AtomicCounterDto> | |||
{ | |||
Code = JT808ResultCode.Ok, | |||
Data = jT808AtomicCounterDto | |||
}); | |||
} | |||
/// <summary> | |||
/// 获取Udp包计数器 | |||
/// </summary> | |||
/// <param name="request"></param> | |||
/// <returns></returns> | |||
public JT808HttpResponse GetUdpAtomicCounter(JT808HttpRequest request) | |||
{ | |||
JT808AtomicCounterDto jT808AtomicCounterDto = new JT808AtomicCounterDto(); | |||
jT808AtomicCounterDto.MsgFailCount = jT808UdpAtomicCounterService.MsgFailCount; | |||
jT808AtomicCounterDto.MsgSuccessCount = jT808UdpAtomicCounterService.MsgSuccessCount; | |||
return CreateJT808HttpResponse(new JT808ResultDto<JT808AtomicCounterDto> | |||
{ | |||
Code = JT808ResultCode.Ok, | |||
Data = jT808AtomicCounterDto | |||
}); | |||
} | |||
/// <summary> | |||
/// 基于Tcp的统一下发信息 | |||
/// </summary> | |||
/// <param name="request"></param> | |||
/// <returns></returns> | |||
public JT808HttpResponse UnificationTcpSend(JT808HttpRequest request) | |||
{ | |||
if (string.IsNullOrEmpty(request.Json)) | |||
{ | |||
return EmptyHttpResponse(); | |||
} | |||
JT808UnificationSendRequestDto jT808UnificationSendRequestDto = JsonConvert.DeserializeObject<JT808UnificationSendRequestDto>(request.Json); | |||
var result = jT808UnificationTcpSendService.Send(jT808UnificationSendRequestDto.TerminalPhoneNo, jT808UnificationSendRequestDto.Data); | |||
return CreateJT808HttpResponse(result); | |||
} | |||
/// <summary> | |||
/// 基于Udp的统一下发信息 | |||
/// </summary> | |||
/// <param name="request"></param> | |||
/// <returns></returns> | |||
public JT808HttpResponse UnificationUdpSend(JT808HttpRequest request) | |||
{ | |||
if (string.IsNullOrEmpty(request.Json)) | |||
{ | |||
return EmptyHttpResponse(); | |||
} | |||
JT808UnificationSendRequestDto jT808UnificationSendRequestDto = JsonConvert.DeserializeObject<JT808UnificationSendRequestDto>(request.Json); | |||
var result = jT808UnificationUdpSendService.Send(jT808UnificationSendRequestDto.TerminalPhoneNo, jT808UnificationSendRequestDto.Data); | |||
return CreateJT808HttpResponse(result); | |||
} | |||
protected virtual void InitTcpRoute() | |||
{ | |||
CreateRoute($"{transmitPrefix}/Add", AddTransmitAddress); | |||
CreateRoute($"{transmitPrefix}/Remove", RemoveTransmitAddress); | |||
CreateRoute($"{transmitPrefix}/GetAll", GetTransmitAll); | |||
CreateRoute($"GetTcpAtomicCounter", GetTcpAtomicCounter); | |||
CreateRoute($"{sessionRoutePrefix}/GetAll", GetSessionAll); | |||
CreateRoute($"{sessionRoutePrefix}/RemoveByTerminalPhoneNo", RemoveByTerminalPhoneNo); | |||
CreateRoute($"UnificationTcpSend", UnificationTcpSend); | |||
} | |||
protected virtual void InitUdpRoute() | |||
{ | |||
CreateRoute($"GetUdpAtomicCounter", GetUdpAtomicCounter); | |||
CreateRoute($"UnificationUdpSend", UnificationUdpSend); | |||
} | |||
} | |||
} |
@@ -2,6 +2,19 @@ | |||
<PropertyGroup> | |||
<TargetFramework>netstandard2.0</TargetFramework> | |||
<LangVersion>7.1</LangVersion> | |||
<Copyright>Copyright 2018.</Copyright> | |||
<Authors>SmallChi</Authors> | |||
<PackageId>JT808.DotNetty.WebApi</PackageId> | |||
<Product>JT808.DotNetty.WebApi</Product> | |||
<Description>基于DotNetty实现的JT808DotNetty的WebApi服务</Description> | |||
<PackageReleaseNotes>基于DotNetty实现的JT808DotNetty的WebApi服务</PackageReleaseNotes> | |||
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance> | |||
<RepositoryUrl>https://github.com/SmallChi/JT808DotNetty</RepositoryUrl> | |||
<PackageProjectUrl>https://github.com/SmallChi/JT808DotNetty</PackageProjectUrl> | |||
<PackageLicenseUrl>https://github.com/SmallChi/JT808DotNetty/blob/master/LICENSE</PackageLicenseUrl> | |||
<GeneratePackageOnBuild>true</GeneratePackageOnBuild> | |||
<Version>1.0.0</Version> | |||
</PropertyGroup> | |||
<ItemGroup> | |||
<PackageReference Include="DotNetty.Buffers" Version="0.6.0" /> | |||
@@ -1,12 +1,8 @@ | |||
| |||
Microsoft Visual Studio Solution File, Format Version 12.00 | |||
# Visual Studio 15 | |||
VisualStudioVersion = 15.0.28307.168 | |||
# Visual Studio Version 16 | |||
VisualStudioVersion = 16.0.28407.52 | |||
MinimumVisualStudioVersion = 10.0.40219.1 | |||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT808.DotNetty", "JT808.DotNetty\JT808.DotNetty.csproj", "{80C7F67E-6B7C-4178-8726-ADD3695622DD}" | |||
EndProject | |||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT808.DotNetty.Test", "JT808.DotNetty.Test\JT808.DotNetty.Test.csproj", "{7315D030-16CA-4AC8-B892-720F3D78C651}" | |||
EndProject | |||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{B5A80356-5AF6-449F-9D8B-3C1BBB9D2443}" | |||
EndProject | |||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT808.Protocol", "JT808.Protocol\src\JT808.Protocol\JT808.Protocol.csproj", "{9FCA2EE9-8253-41AA-A64C-9883413864F9}" | |||
@@ -17,13 +13,13 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT808.DotNetty.Codecs", "JT | |||
EndProject | |||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT808.DotNetty.Core", "JT808.DotNetty.Core\JT808.DotNetty.Core.csproj", "{67C5DC72-0004-48B3-BB5A-9CB7069B4F02}" | |||
EndProject | |||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JT808.DotNetty.Abstractions", "JT808.DotNetty.Abstractions\JT808.DotNetty.Abstractions.csproj", "{4DCF33C0-67C5-4179-AF1E-4E919F9F856D}" | |||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT808.DotNetty.Abstractions", "JT808.DotNetty.Abstractions\JT808.DotNetty.Abstractions.csproj", "{4DCF33C0-67C5-4179-AF1E-4E919F9F856D}" | |||
EndProject | |||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{3BD7FF02-8516-4A77-A385-9FDCDD792E22}" | |||
EndProject | |||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JT808.DotNetty.Tcp", "JT808.DotNetty.Tcp\JT808.DotNetty.Tcp.csproj", "{330CD783-5564-4083-ABFC-573CDC369F50}" | |||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT808.DotNetty.Tcp", "JT808.DotNetty.Tcp\JT808.DotNetty.Tcp.csproj", "{330CD783-5564-4083-ABFC-573CDC369F50}" | |||
EndProject | |||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JT808.DotNetty.WebApi", "JT808.DotNetty.WebApi\JT808.DotNetty.WebApi.csproj", "{B783DE53-CE2A-4225-921F-04E5E57B28F3}" | |||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT808.DotNetty.WebApi", "JT808.DotNetty.WebApi\JT808.DotNetty.WebApi.csproj", "{B783DE53-CE2A-4225-921F-04E5E57B28F3}" | |||
EndProject | |||
Global | |||
GlobalSection(SolutionConfigurationPlatforms) = preSolution | |||
@@ -31,14 +27,6 @@ Global | |||
Release|Any CPU = Release|Any CPU | |||
EndGlobalSection | |||
GlobalSection(ProjectConfigurationPlatforms) = postSolution | |||
{80C7F67E-6B7C-4178-8726-ADD3695622DD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||
{80C7F67E-6B7C-4178-8726-ADD3695622DD}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||
{80C7F67E-6B7C-4178-8726-ADD3695622DD}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||
{80C7F67E-6B7C-4178-8726-ADD3695622DD}.Release|Any CPU.Build.0 = Release|Any CPU | |||
{7315D030-16CA-4AC8-B892-720F3D78C651}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||
{7315D030-16CA-4AC8-B892-720F3D78C651}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||
{7315D030-16CA-4AC8-B892-720F3D78C651}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||
{7315D030-16CA-4AC8-B892-720F3D78C651}.Release|Any CPU.Build.0 = Release|Any CPU | |||
{9FCA2EE9-8253-41AA-A64C-9883413864F9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||
{9FCA2EE9-8253-41AA-A64C-9883413864F9}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||
{9FCA2EE9-8253-41AA-A64C-9883413864F9}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||
@@ -72,8 +60,6 @@ Global | |||
HideSolutionNode = FALSE | |||
EndGlobalSection | |||
GlobalSection(NestedProjects) = preSolution | |||
{80C7F67E-6B7C-4178-8726-ADD3695622DD} = {B5A80356-5AF6-449F-9D8B-3C1BBB9D2443} | |||
{7315D030-16CA-4AC8-B892-720F3D78C651} = {3BD7FF02-8516-4A77-A385-9FDCDD792E22} | |||
{9FCA2EE9-8253-41AA-A64C-9883413864F9} = {B5A80356-5AF6-449F-9D8B-3C1BBB9D2443} | |||
EndGlobalSection | |||
GlobalSection(ExtensibilityGlobals) = postSolution | |||