Selaa lähdekoodia

整理项目去掉一些无用的东西

master
SmallChi(Koike) 4 vuotta sitten
vanhempi
commit
53d8ea2164
31 muutettua tiedostoa jossa 119 lisäystä ja 317 poistoa
  1. +0
    -18
      src/JT1078.Gateway.Abstractions/Enums/JT1078UseType.cs
  2. +1
    -1
      src/JT1078.Gateway.Abstractions/IJT1078MsgConsumer.cs
  3. +2
    -2
      src/JT1078.Gateway.Abstractions/IJT1078MsgProducer.cs
  4. +0
    -12
      src/JT1078.Gateway.Abstractions/IJT1078NormalGatewayBuilder.cs
  5. +0
    -16
      src/JT1078.Gateway.Abstractions/IJT1078PackageConsumer.cs
  6. +0
    -18
      src/JT1078.Gateway.Abstractions/IJT1078PackageProducer.cs
  7. +0
    -12
      src/JT1078.Gateway.Abstractions/IJT1078QueueGatewayBuilder.cs
  8. +9
    -2
      src/JT1078.Gateway.Abstractions/JT1078.Gateway.Abstractions.csproj
  9. +0
    -2
      src/JT1078.Gateway.Coordinator/Controller/UserController.cs
  10. +1
    -1
      src/JT1078.Gateway.Coordinator/Dtos/ChannelCloseRequest.cs
  11. +3
    -3
      src/JT1078.Gateway.InMemoryMQ/JT1078.Gateway.InMemoryMQ.csproj
  12. +4
    -4
      src/JT1078.Gateway.InMemoryMQ/JT1078InMemoryMQExtensions.cs
  13. +2
    -2
      src/JT1078.Gateway.InMemoryMQ/JT1078MsgChannel.cs
  14. +3
    -14
      src/JT1078.Gateway.InMemoryMQ/JT1078MsgConsumer.cs
  15. +4
    -4
      src/JT1078.Gateway.InMemoryMQ/JT1078MsgProducer.cs
  16. +5
    -1
      src/JT1078.Gateway.Tests/JT1078.Gateway.TestNormalHosting/Configs/nlog.Unix.config
  17. +6
    -2
      src/JT1078.Gateway.Tests/JT1078.Gateway.TestNormalHosting/Configs/nlog.Win32NT.config
  18. +1
    -1
      src/JT1078.Gateway.Tests/JT1078.Gateway.TestNormalHosting/JT1078.Gateway.TestNormalHosting.csproj
  19. +2
    -2
      src/JT1078.Gateway.Tests/JT1078.Gateway.TestNormalHosting/Program.cs
  20. +40
    -41
      src/JT1078.Gateway.Tests/JT1078.Gateway.TestNormalHosting/Services/JT1078FlvNormalMsgHostedService.cs
  21. +7
    -5
      src/JT1078.Gateway.Tests/JT1078.Gateway.TestNormalHosting/Services/JT1078HlsNormalMsgHostedService.cs
  22. +12
    -12
      src/JT1078.Gateway.sln
  23. +0
    -19
      src/JT1078.Gateway/Impl/JT1078NormalGatewayBuilderDefault.cs
  24. +0
    -19
      src/JT1078.Gateway/Impl/JT1078QueueGatewayBuilderDefault.cs
  25. +2
    -1
      src/JT1078.Gateway/JT1078.Gateway.csproj
  26. +1
    -11
      src/JT1078.Gateway/JT1078GatewayExtensions.cs
  27. +4
    -47
      src/JT1078.Gateway/JT1078TcpServer.cs
  28. +1
    -41
      src/JT1078.Gateway/JT1078UdpServer.cs
  29. +2
    -2
      src/JT1078.Gateway/Jobs/JT1078SessionNoticeJob.cs
  30. +2
    -2
      src/JT1078.Gateway/Services/JT1078SessionNoticeService.cs
  31. +5
    -0
      src/Version.props

+ 0
- 18
src/JT1078.Gateway.Abstractions/Enums/JT1078UseType.cs Näytä tiedosto

@@ -1,18 +0,0 @@
using System;
using System.Collections.Generic;
using System.Text;

namespace JT1078.Gateway.Abstractions.Enums
{
public enum JT1078UseType : byte
{
/// <summary>
/// 使用正常方式
/// </summary>
Normal = 1,
/// <summary>
/// 使用队列方式
/// </summary>
Queue = 2
}
}

+ 1
- 1
src/JT1078.Gateway.Abstractions/IJT1078MsgConsumer.cs Näytä tiedosto

@@ -7,7 +7,7 @@ namespace JT1078.Gateway.Abstractions
{
public interface IJT1078MsgConsumer : IJT1078PubSub, IDisposable
{
void OnMessage(Action<(string TerminalNo, byte[] Data)> callback);
void OnMessage(Action<(string SIM, byte[] Data)> callback);
CancellationTokenSource Cts { get; }
void Subscribe();
void Unsubscribe();


+ 2
- 2
src/JT1078.Gateway.Abstractions/IJT1078MsgProducer.cs Näytä tiedosto

@@ -10,8 +10,8 @@ namespace JT1078.Gateway.Abstractions
/// <summary>
///
/// </summary>
/// <param name="terminalNo">设备终端号</param>
/// <param name="sim">设备sim终端号</param>
/// <param name="data">jt1078 hex data</param>
ValueTask ProduceAsync(string terminalNo, byte[] data);
ValueTask ProduceAsync(string sim, byte[] data);
}
}

+ 0
- 12
src/JT1078.Gateway.Abstractions/IJT1078NormalGatewayBuilder.cs Näytä tiedosto

@@ -1,12 +0,0 @@
using Microsoft.Extensions.DependencyInjection;
using System;
using System.Collections.Generic;
using System.Text;

namespace JT1078.Gateway.Abstractions
{
public interface IJT1078NormalGatewayBuilder: IJT1078GatewayBuilder
{

}
}

+ 0
- 16
src/JT1078.Gateway.Abstractions/IJT1078PackageConsumer.cs Näytä tiedosto

@@ -1,16 +0,0 @@
using JT1078.Protocol;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;

namespace JT1078.Gateway.Abstractions
{
public interface IJT1078PackageConsumer : IJT1078PubSub, IDisposable
{
void OnMessage(Action<(string TerminalNo, JT1078Package Data)> callback);
CancellationTokenSource Cts { get; }
void Subscribe();
void Unsubscribe();
}
}

+ 0
- 18
src/JT1078.Gateway.Abstractions/IJT1078PackageProducer.cs Näytä tiedosto

@@ -1,18 +0,0 @@
using JT1078.Protocol;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;

namespace JT1078.Gateway.Abstractions
{
public interface IJT1078PackageProducer : IJT1078PubSub, IDisposable
{
/// <summary>
///
/// </summary>
/// <param name="terminalNo">设备终端号</param>
/// <param name="data">jt1078 package data</param>
ValueTask ProduceAsync(string terminalNo, JT1078Package data);
}
}

+ 0
- 12
src/JT1078.Gateway.Abstractions/IJT1078QueueGatewayBuilder.cs Näytä tiedosto

@@ -1,12 +0,0 @@
using Microsoft.Extensions.DependencyInjection;
using System;
using System.Collections.Generic;
using System.Text;

namespace JT1078.Gateway.Abstractions
{
public interface IJT1078QueueGatewayBuilder: IJT1078GatewayBuilder
{

}
}

+ 9
- 2
src/JT1078.Gateway.Abstractions/JT1078.Gateway.Abstractions.csproj Näytä tiedosto

@@ -1,5 +1,5 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\Version.props" />
<PropertyGroup>
<TargetFramework>netstandard2.1</TargetFramework>
<LangVersion>8.0</LangVersion>
@@ -17,8 +17,15 @@
<SignAssembly>false</SignAssembly>
<PackageLicenseFile>LICENSE</PackageLicenseFile>
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
<Version>1.0.0-preview2</Version>
<Version>$(JT1078PackageVersion)</Version>
</PropertyGroup>

<ItemGroup>
<Compile Remove="IJT1078NormalGatewayBuilder.cs" />
<Compile Remove="IJT1078PackageConsumer.cs" />
<Compile Remove="IJT1078PackageProducer.cs" />
<Compile Remove="IJT1078QueueGatewayBuilder.cs" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\LICENSE" Pack="true" PackagePath="" />


+ 0
- 2
src/JT1078.Gateway.Coordinator/Controller/UserController.cs Näytä tiedosto

@@ -16,8 +16,6 @@ namespace JT1078.Gateway.Coordinator.Controller
[EnableCors("any")]
public class UserController : ControllerBase
{


/// <summary>
/// 登录
/// </summary>


+ 1
- 1
src/JT1078.Gateway.Coordinator/Dtos/ChannelCloseRequest.cs Näytä tiedosto

@@ -10,7 +10,7 @@ namespace JT1078.Gateway.Coordinator.Dtos
/// <summary>
/// 设备sim卡号
/// </summary>
public string TerminalPhoneNo { get; set; }
public string Sim { get; set; }
/// <summary>
/// 通道号
/// </summary>


+ 3
- 3
src/JT1078.Gateway.InMemoryMQ/JT1078.Gateway.InMemoryMQ.csproj Näytä tiedosto

@@ -1,5 +1,5 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\Version.props" />
<PropertyGroup>
<TargetFramework>netstandard2.1</TargetFramework>
<LangVersion>8.0</LangVersion>
@@ -17,7 +17,7 @@
<SignAssembly>false</SignAssembly>
<PackageLicenseFile>LICENSE</PackageLicenseFile>
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
<Version>1.0.0-preview2</Version>
<Version>$(JT1078PackageVersion)</Version>
</PropertyGroup>

<ItemGroup>
@@ -25,7 +25,7 @@
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\JT1078.Gateway\JT1078.Gateway.csproj" />
<ProjectReference Include="..\JT1078.Gateway.Abstractions\JT1078.Gateway.Abstractions.csproj" />
</ItemGroup>

</Project>

+ 4
- 4
src/JT1078.Gateway.InMemoryMQ/JT1078InMemoryMQExtensions.cs Näytä tiedosto

@@ -9,17 +9,17 @@ namespace JT1078.Gateway.InMemoryMQ
{
public static class JT1078InMemoryMQExtensions
{
public static IJT1078NormalGatewayBuilder AddMsgProducer(this IJT1078NormalGatewayBuilder builder)
public static IJT1078GatewayBuilder AddMsgProducer(this IJT1078GatewayBuilder builder)
{
builder.JT1078Builder.Services.TryAddSingleton<JT1078MsgChannel>();
builder.JT1078Builder.Services.AddSingleton<IJT1078PackageProducer, JT1078PackageProducer>();
builder.JT1078Builder.Services.AddSingleton<IJT1078MsgProducer, JT1078MsgProducer>();
return builder;
}

public static IJT1078NormalGatewayBuilder AddMsgConsumer(this IJT1078NormalGatewayBuilder builder)
public static IJT1078GatewayBuilder AddMsgConsumer(this IJT1078GatewayBuilder builder)
{
builder.JT1078Builder.Services.TryAddSingleton<JT1078MsgChannel>();
builder.JT1078Builder.Services.AddSingleton<IJT1078PackageConsumer, JT1078PackageConsumer>();
builder.JT1078Builder.Services.AddSingleton<IJT1078MsgConsumer, JT1078MsgConsumer>();
return builder;
}
}


+ 2
- 2
src/JT1078.Gateway.InMemoryMQ/JT1078MsgChannel.cs Näytä tiedosto

@@ -7,11 +7,11 @@ namespace JT1078.Gateway.InMemoryMQ
{
public class JT1078MsgChannel
{
public Channel<(string, JT1078.Protocol.JT1078Package)> Channel { get;}
public Channel<(string, byte[])> Channel { get;}

public JT1078MsgChannel()
{
Channel = System.Threading.Channels.Channel.CreateUnbounded<(string, JT1078.Protocol.JT1078Package)>();
Channel = System.Threading.Channels.Channel.CreateUnbounded<(string, byte[])>();
}
}
}

src/JT1078.Gateway.InMemoryMQ/JT1078PackageConsumer.cs → src/JT1078.Gateway.InMemoryMQ/JT1078MsgConsumer.cs Näytä tiedosto

@@ -1,25 +1,18 @@
using JT1078.Gateway.Abstractions;
using JT1078.Protocol;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Text;
using System.Text.Json;
using System.Text.Json.Serialization;
using System.Threading;
using System.Threading.Tasks;

namespace JT1078.Gateway.InMemoryMQ
{
public class JT1078PackageConsumer: IJT1078PackageConsumer
public class JT1078MsgConsumer : IJT1078MsgConsumer
{
private JT1078MsgChannel Channel;
private readonly ILogger logger;

public JT1078PackageConsumer(ILoggerFactory loggerFactory,JT1078MsgChannel channel)
public JT1078MsgConsumer(JT1078MsgChannel channel)
{
Channel = channel;
logger = loggerFactory.CreateLogger<JT1078PackageConsumer>();
}

public CancellationTokenSource Cts { get; } = new CancellationTokenSource();
@@ -31,17 +24,13 @@ namespace JT1078.Gateway.InMemoryMQ

}

public void OnMessage(Action<(string TerminalNo, JT1078Package Data)> callback)
public void OnMessage(Action<(string SIM, byte[] Data)> callback)
{
Task.Run(async() =>
{
while (!Cts.IsCancellationRequested)
{
var reader = await Channel.Channel.Reader.ReadAsync(Cts.Token);
if (logger.IsEnabled(LogLevel.Trace))
{
logger.LogTrace(JsonSerializer.Serialize(reader.Item2));
}
callback(reader);
}
}, Cts.Token);

src/JT1078.Gateway.InMemoryMQ/JT1078PackageProducer.cs → src/JT1078.Gateway.InMemoryMQ/JT1078MsgProducer.cs Näytä tiedosto

@@ -8,13 +8,13 @@ using System.Threading.Tasks;

namespace JT1078.Gateway.InMemoryMQ
{
public class JT1078PackageProducer : IJT1078PackageProducer
public class JT1078MsgProducer : IJT1078MsgProducer
{
public string TopicName { get; }= "JT1078Package";

private JT1078MsgChannel Channel;

public JT1078PackageProducer(JT1078MsgChannel channel)
public JT1078MsgProducer(JT1078MsgChannel channel)
{
Channel = channel;
}
@@ -24,9 +24,9 @@ namespace JT1078.Gateway.InMemoryMQ
}

public async ValueTask ProduceAsync(string terminalNo, JT1078Package data)
public async ValueTask ProduceAsync(string sim, byte[] data)
{
await Channel.Channel.Writer.WriteAsync((terminalNo, data));
await Channel.Channel.Writer.WriteAsync((sim, data));
}
}
}

+ 5
- 1
src/JT1078.Gateway.Tests/JT1078.Gateway.TestNormalHosting/Configs/nlog.Unix.config Näytä tiedosto

@@ -15,6 +15,9 @@
<target name="JT1078TcpServer" xsi:type="File"
fileName="${Directory}/JT1078TcpServer.${shortdate}.log"
layout="${date:format=yyyyMMddHHmmss} ${callsite} ${level}:${message} ${onexception:${exception:format=tostring} ${newline} ${stacktrace} ${newline}"/>
<target name="JT1078UdpServer" xsi:type="File"
fileName="${Directory}/JT1078UdpServer.${shortdate}.log"
layout="${date:format=yyyyMMddHHmmss} ${callsite} ${level}:${message} ${onexception:${exception:format=tostring} ${newline} ${stacktrace} ${newline}"/>
<target name="JT1078Logging" xsi:type="File"
fileName="${Directory}/JT1078Logging.${shortdate}.log"
layout="${message}"/>
@@ -32,6 +35,7 @@
<logger name="*" minlevel="Trace" writeTo="all"/>
<logger name="JT1078.Gateway.TestNormalHosting.Services.JT1078FlvNormalMsgHostedService" minlevel="Trace" writeTo="JT1078FlvNormalMsgHostedService"/>
<logger name="JT1078.Gateway.JT1078TcpServer" minlevel="Trace" writeTo="JT1078TcpServer"/>
<logger name="JT1078Logging" minlevel="Trace" writeTo="JT1078Logging"/>
<logger name="JT1078.Gateway.JT1078UdpServer" minlevel="Trace" writeTo="JT1078UdpServer"/>
<logger name="JT1078.Gateway.JT1078Logging" minlevel="Trace" writeTo="JT1078Logging"/>
</rules>
</nlog>

+ 6
- 2
src/JT1078.Gateway.Tests/JT1078.Gateway.TestNormalHosting/Configs/nlog.Win32NT.config Näytä tiedosto

@@ -23,6 +23,9 @@
<target name="JT1078TcpServer" xsi:type="File"
fileName="${Directory}/JT1078TcpServer.${shortdate}.log"
layout="${date:format=yyyyMMddHHmmss} ${callsite} ${level}:${message} ${onexception:${exception:format=tostring} ${newline} ${stacktrace} ${newline}"/>
<target name="JT1078UdpServer" xsi:type="File"
fileName="${Directory}/JT1078UdpServer.${shortdate}.log"
layout="${date:format=yyyyMMddHHmmss} ${callsite} ${level}:${message} ${onexception:${exception:format=tostring} ${newline} ${stacktrace} ${newline}"/>
<target name="JT1078Logging" xsi:type="File"
fileName="${Directory}/JT1078Logging.${shortdate}.log"
layout="${message}"/>
@@ -37,8 +40,9 @@
</target>
</targets>
<rules>
<logger name="*" minlevel="Trace" writeTo="all,console"/>
<logger name="*" minlevel="Error" writeTo="all,console"/>
<logger name="JT1078.Gateway.JT1078TcpServer" minlevel="Trace" writeTo="JT1078TcpServer,console"/>
<logger name="JT1078Logging" minlevel="Trace" writeTo="JT1078Logging,console"/>
<logger name="JT1078.Gateway.JT1078UdpServer" minlevel="Trace" writeTo="JT1078UdpServer,console"/>
<logger name="JT1078.Gateway.JT1078Logging" minlevel="Trace" writeTo="JT1078Logging,console"/>
</rules>
</nlog>

+ 1
- 1
src/JT1078.Gateway.Tests/JT1078.Gateway.TestNormalHosting/JT1078.Gateway.TestNormalHosting.csproj Näytä tiedosto

@@ -14,7 +14,7 @@
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="3.1.7" />
<PackageReference Include="NLog.Extensions.Logging" Version="1.6.4" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\JT1078.Gateway.InMemoryMQ\JT1078.Gateway.InMemoryMQ.csproj" />
<ProjectReference Include="..\..\JT1078.Gateway\JT1078.Gateway.csproj" />


+ 2
- 2
src/JT1078.Gateway.Tests/JT1078.Gateway.TestNormalHosting/Program.cs Näytä tiedosto

@@ -39,7 +39,7 @@ namespace JT1078.Gateway.TestNormalHosting
services.AddSingleton<TSEncoder>();
services.AddSingleton(new M3U8Option
{
});
services.AddSingleton<M3U8FileManage>();
//使用内存队列实现会话通知
@@ -48,9 +48,9 @@ namespace JT1078.Gateway.TestNormalHosting
.AddUdp()
.AddHttp()
//.AddCoordinatorHttpClient()
.AddNormal()
.AddMsgProducer()
.AddMsgConsumer();
//内存队列没有做分发,可以自己实现。
services.AddHostedService<JT1078FlvNormalMsgHostedService>();
//services.AddHostedService<JT1078HlsNormalMsgHostedService>();
});


+ 40
- 41
src/JT1078.Gateway.Tests/JT1078.Gateway.TestNormalHosting/Services/JT1078FlvNormalMsgHostedService.cs Näytä tiedosto

@@ -19,7 +19,7 @@ namespace JT1078.Gateway.TestNormalHosting.Services
{
public class JT1078FlvNormalMsgHostedService : BackgroundService
{
private IJT1078PackageConsumer PackageConsumer;
private IJT1078MsgConsumer JT1078MsgConsumer;
private JT1078HttpSessionManager HttpSessionManager;
private FlvEncoder FlvEncoder;
private ILogger Logger;
@@ -31,74 +31,73 @@ namespace JT1078.Gateway.TestNormalHosting.Services
ILoggerFactory loggerFactory,
FlvEncoder flvEncoder,
JT1078HttpSessionManager httpSessionManager,
IJT1078PackageConsumer packageConsumer)
IJT1078MsgConsumer msgConsumer)
{
Logger = loggerFactory.CreateLogger<JT1078FlvNormalMsgHostedService>();
PackageConsumer = packageConsumer;
JT1078MsgConsumer = msgConsumer;
HttpSessionManager = httpSessionManager;
FlvEncoder = flvEncoder;
this.memoryCache = memoryCache;
}
protected override Task ExecuteAsync(CancellationToken stoppingToken)
{
PackageConsumer.OnMessage((Message) =>
JT1078MsgConsumer.OnMessage((Message) =>
{
JT1078Package package = JT1078Serializer.Deserialize(Message.Data);
if (Logger.IsEnabled(LogLevel.Debug))
{
Logger.LogDebug(JsonSerializer.Serialize(HttpSessionManager.GetAll()));
Logger.LogDebug($"{package.SIM},{package.SN},{package.LogicChannelNumber},{package.Label3.DataType.ToString()},{package.Label3.SubpackageType.ToString()},{package.Bodies.ToHexString()}");
}
try
{
if (Logger.IsEnabled(LogLevel.Debug))
var merge = JT1078Serializer.Merge(package);
if (merge == null) return;
string key = $"{package.GetKey()}_{ikey}";
if (merge.Label3.DataType == Protocol.Enums.JT1078DataType.视频I帧)
{
Logger.LogDebug(JsonSerializer.Serialize(HttpSessionManager.GetAll()));
Logger.LogDebug($"{Message.Data.SIM},{Message.Data.SN},{Message.Data.LogicChannelNumber},{Message.Data.Label3.DataType.ToString()},{Message.Data.Label3.SubpackageType.ToString()},{Message.Data.Bodies.ToHexString()}");
memoryCache.Set(key, merge);
}
var merge = JT1078.Protocol.JT1078Serializer.Merge(Message.Data);
string key = $"{Message.Data.GetKey()}_{ikey}";
if (merge != null)
var httpSessions = HttpSessionManager.GetAllBySimAndChannelNo(package.SIM.TrimStart('0'), package.LogicChannelNumber);
var firstHttpSessions = httpSessions.Where(w => !w.FirstSend).ToList();
if (firstHttpSessions.Count > 0)
{
if (merge.Label3.DataType == Protocol.Enums.JT1078DataType.视频I帧)
{
memoryCache.Set(key, merge);
}
var httpSessions = HttpSessionManager.GetAllBySimAndChannelNo(Message.Data.SIM.TrimStart('0'), Message.Data.LogicChannelNumber);
var firstHttpSessions = httpSessions.Where(w => !w.FirstSend).ToList();
if (firstHttpSessions.Count > 0)
{
if (memoryCache.TryGetValue(key, out JT1078Package idata))
{
try
{
var flvVideoBuffer = FlvEncoder.EncoderVideoTag(idata, true);
foreach (var session in firstHttpSessions)
{
HttpSessionManager.SendAVData(session, flvVideoBuffer, true);
}
}
catch (Exception ex)
{
Logger.LogError(ex, $"{Message.Data.SIM},{true},{Message.Data.SN},{Message.Data.LogicChannelNumber},{Message.Data.Label3.DataType.ToString()},{Message.Data.Label3.SubpackageType.ToString()},{Message.Data.Bodies.ToHexString()}");
}
}
}
var otherHttpSessions = httpSessions.Where(w => w.FirstSend).ToList();
if (otherHttpSessions.Count > 0)
if (memoryCache.TryGetValue(key, out JT1078Package idata))
{
try
{
var flvVideoBuffer = FlvEncoder.EncoderVideoTag(merge, false);
foreach (var session in otherHttpSessions)
var flvVideoBuffer = FlvEncoder.EncoderVideoTag(idata, true);
foreach (var session in firstHttpSessions)
{
HttpSessionManager.SendAVData(session, flvVideoBuffer, false);
HttpSessionManager.SendAVData(session, flvVideoBuffer, true);
}
}
catch (Exception ex)
{
Logger.LogError(ex, $"{Message.Data.SIM},{false},{Message.Data.SN},{Message.Data.LogicChannelNumber},{Message.Data.Label3.DataType.ToString()},{Message.Data.Label3.SubpackageType.ToString()},{Message.Data.Bodies.ToHexString()}");
Logger.LogError(ex, $"{package.SIM},{true},{package.SN},{package.LogicChannelNumber},{package.Label3.DataType.ToString()},{package.Label3.SubpackageType.ToString()},{package.Bodies.ToHexString()}");
}
}
}
var otherHttpSessions = httpSessions.Where(w => w.FirstSend).ToList();
if (otherHttpSessions.Count > 0)
{
try
{
var flvVideoBuffer = FlvEncoder.EncoderVideoTag(merge, false);
foreach (var session in otherHttpSessions)
{
HttpSessionManager.SendAVData(session, flvVideoBuffer, false);
}
}
catch (Exception ex)
{
Logger.LogError(ex, $"{package.SIM},{false},{package.SN},{package.LogicChannelNumber},{package.Label3.DataType.ToString()},{package.Label3.SubpackageType.ToString()},{package.Bodies.ToHexString()}");
}
}
}
catch (Exception ex)
{
Logger.LogError(ex, $"{Message.Data.SIM},{Message.Data.SN},{Message.Data.LogicChannelNumber},{Message.Data.Label3.DataType.ToString()},{Message.Data.Label3.SubpackageType.ToString()},{Message.Data.Bodies.ToHexString()}");
Logger.LogError(ex, $"{package.SIM},{package.SN},{package.LogicChannelNumber},{package.Label3.DataType.ToString()},{package.Label3.SubpackageType.ToString()},{package.Bodies.ToHexString()}");
}
});
return Task.CompletedTask;


+ 7
- 5
src/JT1078.Gateway.Tests/JT1078.Gateway.TestNormalHosting/Services/JT1078HlsNormalMsgHostedService.cs Näytä tiedosto

@@ -1,6 +1,7 @@
using JT1078.Gateway.Abstractions;
using JT1078.Gateway.Sessions;
using JT1078.Hls;
using JT1078.Protocol;
using Microsoft.Extensions.Hosting;
using System;
using System.Collections.Generic;
@@ -13,23 +14,24 @@ namespace JT1078.Gateway.TestNormalHosting.Services
{
public class JT1078HlsNormalMsgHostedService : BackgroundService
{
private IJT1078PackageConsumer PackageConsumer;
private IJT1078MsgConsumer MsgConsumer;
private JT1078HttpSessionManager HttpSessionManager;
private M3U8FileManage M3U8FileManage;
public JT1078HlsNormalMsgHostedService(
M3U8FileManage M3U8FileManage,
JT1078HttpSessionManager httpSessionManager,
IJT1078PackageConsumer packageConsumer)
IJT1078MsgConsumer msgConsumer)
{
PackageConsumer = packageConsumer;
MsgConsumer = msgConsumer;
HttpSessionManager = httpSessionManager;
this.M3U8FileManage = M3U8FileManage;
}
protected override Task ExecuteAsync(CancellationToken stoppingToken)
{
PackageConsumer.OnMessage((Message) =>
MsgConsumer.OnMessage((Message) =>
{
var merge = JT1078.Protocol.JT1078Serializer.Merge(Message.Data);
JT1078Package package = JT1078Serializer.Deserialize(Message.Data);
var merge = JT1078.Protocol.JT1078Serializer.Merge(package);
if (merge != null)
{
var hasHttpSessionn = HttpSessionManager.GetAllHttpContextBySimAndChannelNo(merge.SIM, merge.LogicChannelNumber);


+ 12
- 12
src/JT1078.Gateway.sln Näytä tiedosto

@@ -3,30 +3,26 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.29418.71
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT1078.Gateway", "JT1078.Gateway\JT1078.Gateway.csproj", "{39A90F1C-FC46-4905-81F1-3AEE44D6D86D}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT1078.Gateway.Test", "JT1078.Gateway.Tests\JT1078.Gateway.Test\JT1078.Gateway.Test.csproj", "{DAC80A8E-4172-451F-910D-9032BF8640F9}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{04C0F72A-5BC4-4CEE-B1E9-CCFAA72E373E}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT1078.Gateway.Abstractions", "JT1078.Gateway.Abstractions\JT1078.Gateway.Abstractions.csproj", "{EE50F2A6-5F28-4640-BC20-44A8BED8F311}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT1078.Gateway.InMemoryMQ", "JT1078.Gateway.InMemoryMQ\JT1078.Gateway.InMemoryMQ.csproj", "{C7554790-0B3B-490F-B2F1-436C1FD0B4DD}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT1078.Gateway.TestNormalHosting", "JT1078.Gateway.Tests\JT1078.Gateway.TestNormalHosting\JT1078.Gateway.TestNormalHosting.csproj", "{6E2DAA64-E2A1-4459-BE61-E807B4EF2CCE}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT1078.Gateway.Coordinator", "JT1078.Gateway.Coordinator\JT1078.Gateway.Coordinator.csproj", "{B0A24D3A-FDA3-4DFE-9C31-032C7C22F303}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT1078.Gateway", "JT1078.Gateway\JT1078.Gateway.csproj", "{9042CA92-E01A-46CF-9C82-D954325A69B8}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT1078.Gateway.InMemoryMQ", "JT1078.Gateway.InMemoryMQ\JT1078.Gateway.InMemoryMQ.csproj", "{011934D6-BEE7-4CDA-9F67-4D6D7D672D6C}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{39A90F1C-FC46-4905-81F1-3AEE44D6D86D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{39A90F1C-FC46-4905-81F1-3AEE44D6D86D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{39A90F1C-FC46-4905-81F1-3AEE44D6D86D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{39A90F1C-FC46-4905-81F1-3AEE44D6D86D}.Release|Any CPU.Build.0 = Release|Any CPU
{DAC80A8E-4172-451F-910D-9032BF8640F9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DAC80A8E-4172-451F-910D-9032BF8640F9}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DAC80A8E-4172-451F-910D-9032BF8640F9}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -35,10 +31,6 @@ Global
{EE50F2A6-5F28-4640-BC20-44A8BED8F311}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EE50F2A6-5F28-4640-BC20-44A8BED8F311}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EE50F2A6-5F28-4640-BC20-44A8BED8F311}.Release|Any CPU.Build.0 = Release|Any CPU
{C7554790-0B3B-490F-B2F1-436C1FD0B4DD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C7554790-0B3B-490F-B2F1-436C1FD0B4DD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C7554790-0B3B-490F-B2F1-436C1FD0B4DD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C7554790-0B3B-490F-B2F1-436C1FD0B4DD}.Release|Any CPU.Build.0 = Release|Any CPU
{6E2DAA64-E2A1-4459-BE61-E807B4EF2CCE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6E2DAA64-E2A1-4459-BE61-E807B4EF2CCE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6E2DAA64-E2A1-4459-BE61-E807B4EF2CCE}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -47,6 +39,14 @@ Global
{B0A24D3A-FDA3-4DFE-9C31-032C7C22F303}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B0A24D3A-FDA3-4DFE-9C31-032C7C22F303}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B0A24D3A-FDA3-4DFE-9C31-032C7C22F303}.Release|Any CPU.Build.0 = Release|Any CPU
{9042CA92-E01A-46CF-9C82-D954325A69B8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9042CA92-E01A-46CF-9C82-D954325A69B8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9042CA92-E01A-46CF-9C82-D954325A69B8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9042CA92-E01A-46CF-9C82-D954325A69B8}.Release|Any CPU.Build.0 = Release|Any CPU
{011934D6-BEE7-4CDA-9F67-4D6D7D672D6C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{011934D6-BEE7-4CDA-9F67-4D6D7D672D6C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{011934D6-BEE7-4CDA-9F67-4D6D7D672D6C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{011934D6-BEE7-4CDA-9F67-4D6D7D672D6C}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE


+ 0
- 19
src/JT1078.Gateway/Impl/JT1078NormalGatewayBuilderDefault.cs Näytä tiedosto

@@ -1,19 +0,0 @@
using JT1078.Gateway.Abstractions;

namespace JT1078.Gateway.Impl
{
public class JT1078NormalGatewayBuilderDefault : IJT1078NormalGatewayBuilder
{
public IJT1078Builder JT1078Builder { get; }

public JT1078NormalGatewayBuilderDefault(IJT1078Builder builder)
{
JT1078Builder = builder;
}

public IJT1078Builder Builder()
{
return JT1078Builder;
}
}
}

+ 0
- 19
src/JT1078.Gateway/Impl/JT1078QueueGatewayBuilderDefault.cs Näytä tiedosto

@@ -1,19 +0,0 @@
using JT1078.Gateway.Abstractions;

namespace JT1078.Gateway.Impl
{
public class JT1078QueueGatewayBuilderDefault : IJT1078QueueGatewayBuilder
{
public IJT1078Builder JT1078Builder { get; }

public JT1078QueueGatewayBuilderDefault(IJT1078Builder builder)
{
JT1078Builder = builder;
}

public IJT1078Builder Builder()
{
return JT1078Builder;
}
}
}

+ 2
- 1
src/JT1078.Gateway/JT1078.Gateway.csproj Näytä tiedosto

@@ -1,4 +1,5 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\Version.props" />
<PropertyGroup>
<TargetFramework>netstandard2.1</TargetFramework>
<LangVersion>8.0</LangVersion>
@@ -16,7 +17,7 @@
<SignAssembly>false</SignAssembly>
<PackageLicenseFile>LICENSE</PackageLicenseFile>
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
<Version>1.0.0-preview2</Version>
<Version>$(JT1078PackageVersion)</Version>
</PropertyGroup>
<ItemGroup>
<Compile Remove="Codecs\**" />


+ 1
- 11
src/JT1078.Gateway/JT1078GatewayExtensions.cs Näytä tiedosto

@@ -66,7 +66,7 @@ namespace JT1078.Gateway
builder.JT1078Builder.Services.AddHostedService<JT1078HttpServer>();
return builder;
}
public static IJT1078GatewayBuilder AddCoordinatorHttpClient(this IJT1078GatewayBuilder builder)
{
builder.JT1078Builder.Services.AddSingleton<JT1078CoordinatorHttpClient>();
@@ -74,16 +74,6 @@ namespace JT1078.Gateway
return builder;
}

public static IJT1078NormalGatewayBuilder AddNormal(this IJT1078GatewayBuilder builder)
{
return new JT1078NormalGatewayBuilderDefault(builder.JT1078Builder);
}

public static IJT1078QueueGatewayBuilder AddQueue(this IJT1078GatewayBuilder builder)
{
return new JT1078QueueGatewayBuilderDefault(builder.JT1078Builder);
}

internal static IJT1078GatewayBuilder AddJT1078Core(this IJT1078GatewayBuilder builder)
{
builder.JT1078Builder.Services.AddSingleton<JT1078SessionNoticeService>();


+ 4
- 47
src/JT1078.Gateway/JT1078TcpServer.cs Näytä tiedosto

@@ -1,7 +1,6 @@
using System;
using System.Buffers;
using System.Buffers.Binary;
using System.Collections.Generic;
using System.IO.Pipelines;
using System.Linq;
using System.Net;
@@ -10,7 +9,6 @@ using System.Text;
using System.Threading;
using System.Threading.Tasks;
using JT1078.Gateway.Abstractions;
using JT1078.Gateway.Abstractions.Enums;
using JT1078.Gateway.Configurations;
using JT1078.Gateway.Sessions;
using JT1078.Protocol;
@@ -34,34 +32,8 @@ namespace JT1078.Gateway

private readonly JT1078SessionManager SessionManager;

private readonly IJT1078PackageProducer jT1078PackageProducer;

private readonly IJT1078MsgProducer jT1078MsgProducer;

private readonly JT1078UseType jT1078UseType;

/// <summary>
/// 使用正常方式
/// </summary>
/// <param name="jT1078PackageProducer"></param>
/// <param name="jT1078ConfigurationAccessor"></param>
/// <param name="loggerFactory"></param>
/// <param name="jT1078SessionManager"></param>
public JT1078TcpServer(
IJT1078PackageProducer jT1078PackageProducer,
IOptions<JT1078Configuration> jT1078ConfigurationAccessor,
ILoggerFactory loggerFactory,
JT1078SessionManager jT1078SessionManager)
{
SessionManager = jT1078SessionManager;
jT1078UseType = JT1078UseType.Normal;
Logger = loggerFactory.CreateLogger<JT1078TcpServer>();
LogLogger = loggerFactory.CreateLogger("JT1078Logging");
Configuration = jT1078ConfigurationAccessor.Value;
this.jT1078PackageProducer = jT1078PackageProducer;
InitServer();
}

/// <summary>
/// 使用队列方式
/// </summary>
@@ -70,15 +42,14 @@ namespace JT1078.Gateway
/// <param name="loggerFactory"></param>
/// <param name="jT1078SessionManager"></param>
public JT1078TcpServer(
IJT1078MsgProducer jT1078MsgProducer,
IJT1078MsgProducer jT1078MsgProducer,
IOptions<JT1078Configuration> jT1078ConfigurationAccessor,
ILoggerFactory loggerFactory,
JT1078SessionManager jT1078SessionManager)
{
SessionManager = jT1078SessionManager;
jT1078UseType = JT1078UseType.Queue;
Logger = loggerFactory.CreateLogger<JT1078TcpServer>();
LogLogger = loggerFactory.CreateLogger("JT1078Logging");
LogLogger = loggerFactory.CreateLogger("JT1078.Gateway.JT1078Logging");
Configuration = jT1078ConfigurationAccessor.Value;
this.jT1078MsgProducer = jT1078MsgProducer;
InitServer();
@@ -266,14 +237,7 @@ namespace JT1078.Gateway
try
{
SessionManager.TryLink(fixedHeaderInfo.SIM, session);
if (jT1078UseType == JT1078UseType.Queue)
{
jT1078MsgProducer.ProduceAsync(fixedHeaderInfo.SIM, package1.ToArray());
}
else
{
jT1078PackageProducer.ProduceAsync(fixedHeaderInfo.SIM, JT1078Serializer.Deserialize(package1));
}
jT1078MsgProducer.ProduceAsync(fixedHeaderInfo.SIM, package1.ToArray());
}
catch (Exception ex)
{
@@ -307,14 +271,7 @@ namespace JT1078.Gateway
try
{
SessionManager.TryLink(fixedHeaderInfo.SIM, session);
if (jT1078UseType == JT1078UseType.Queue)
{
jT1078MsgProducer.ProduceAsync(fixedHeaderInfo.SIM, package);
}
else
{
jT1078PackageProducer.ProduceAsync(fixedHeaderInfo.SIM, JT1078Serializer.Deserialize(package));
}
jT1078MsgProducer.ProduceAsync(fixedHeaderInfo.SIM, package);
}
catch (Exception ex)
{


+ 1
- 41
src/JT1078.Gateway/JT1078UdpServer.cs Näytä tiedosto

@@ -1,20 +1,13 @@
using System;
using System.Buffers;
using System.Buffers.Binary;
using System.Collections.Generic;
using System.IO.Pipelines;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using JT1078.Gateway.Abstractions;
using JT1078.Gateway.Abstractions.Enums;
using JT1078.Gateway.Configurations;
using JT1078.Gateway.Sessions;
using JT1078.Protocol;
using JT1078.Protocol.Enums;
using JT1078.Protocol.Extensions;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
@@ -32,33 +25,8 @@ namespace JT1078.Gateway

private readonly JT1078SessionManager SessionManager;

private readonly IJT1078PackageProducer jT1078PackageProducer;

private readonly IJT1078MsgProducer jT1078MsgProducer;

private readonly JT1078UseType jT1078UseType;

/// <summary>
/// 使用正常方式
/// </summary>
/// <param name="jT1078PackageProducer"></param>
/// <param name="jT1078ConfigurationAccessor"></param>
/// <param name="loggerFactory"></param>
/// <param name="jT1078SessionManager"></param>
public JT1078UdpServer(
IJT1078PackageProducer jT1078PackageProducer,
IOptions<JT1078Configuration> jT1078ConfigurationAccessor,
ILoggerFactory loggerFactory,
JT1078SessionManager jT1078SessionManager)
{
SessionManager = jT1078SessionManager;
jT1078UseType = JT1078UseType.Normal;
Logger = loggerFactory.CreateLogger<JT1078TcpServer>();
Configuration = jT1078ConfigurationAccessor.Value;
this.jT1078PackageProducer = jT1078PackageProducer;
InitServer();
}

/// <summary>
/// 使用队列方式
/// </summary>
@@ -73,7 +41,6 @@ namespace JT1078.Gateway
JT1078SessionManager jT1078SessionManager)
{
SessionManager = jT1078SessionManager;
jT1078UseType = JT1078UseType.Queue;
Logger = loggerFactory.CreateLogger<JT1078UdpServer>();
Configuration = jT1078ConfigurationAccessor.Value;
this.jT1078MsgProducer = jT1078MsgProducer;
@@ -134,14 +101,7 @@ namespace JT1078.Gateway
{
Logger.LogInformation($"[Connected]:{receiveMessageFromResult.RemoteEndPoint}");
}
if (jT1078UseType == JT1078UseType.Queue)
{
jT1078MsgProducer.ProduceAsync(package.SIM, buffer.ToArray());
}
else
{
jT1078PackageProducer.ProduceAsync(package.SIM, package);
}
jT1078MsgProducer.ProduceAsync(package.SIM, buffer.ToArray());
}
catch (NotImplementedException ex)
{


+ 2
- 2
src/JT1078.Gateway/Jobs/JT1078SessionNoticeJob.cs Näytä tiedosto

@@ -38,14 +38,14 @@ namespace JT1078.Gateway.Jobs
{
if (logger.IsEnabled(LogLevel.Information))
{
logger.LogInformation($"[Notice]:{notice.TerminalPhoneNo}-{notice.ProtocolType}-{notice.SessionType}");
logger.LogInformation($"[Notice]:{notice.SIM}-{notice.ProtocolType}-{notice.SessionType}");
}
if(JT1078GatewayConstants.SessionOffline== notice.SessionType)
{
if (HttpSessionManager != null)
{
//当1078设备主动断开的情况下,需要关闭所有再观看的连接
HttpSessionManager.TryRemoveBySim(notice.TerminalPhoneNo);
HttpSessionManager.TryRemoveBySim(notice.SIM);
}
}
}


+ 2
- 2
src/JT1078.Gateway/Services/JT1078SessionNoticeService.cs Näytä tiedosto

@@ -7,10 +7,10 @@ namespace JT1078.Gateway.Services
{
public class JT1078SessionNoticeService
{
public BlockingCollection<(string SessionType, string TerminalPhoneNo,string ProtocolType)> SessionNoticeBlockingCollection { get;internal set; }
public BlockingCollection<(string SessionType, string SIM,string ProtocolType)> SessionNoticeBlockingCollection { get;internal set; }
public JT1078SessionNoticeService()
{
SessionNoticeBlockingCollection = new BlockingCollection<(string SessionType, string TerminalPhoneNo, string ProtocolType)>();
SessionNoticeBlockingCollection = new BlockingCollection<(string SessionType, string SIM, string ProtocolType)>();
}
}
}

+ 5
- 0
src/Version.props Näytä tiedosto

@@ -0,0 +1,5 @@
<Project>
<PropertyGroup>
<JT1078PackageVersion>1.0.0-preview3</JT1078PackageVersion>
</PropertyGroup>
</Project>

Ladataan…
Peruuta
Tallenna