瀏覽代碼

添加是否合并分包成功的属性

tags/v2.6.8
yedajiang44 10 月之前
父節點
當前提交
cfa2cf2083
共有 5 個文件被更改,包括 14 次插入3 次删除
  1. +1
    -1
      src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.SuBiao/MessageBody/JT808_0x9208.cs
  2. +3
    -1
      src/JT808.Protocol.Test/JT808SerializerTest.cs
  3. +1
    -1
      src/JT808.Protocol/Internal/DefaultMerger.cs
  4. +5
    -0
      src/JT808.Protocol/JT808.Protocol.xml
  5. +4
    -0
      src/JT808.Protocol/JT808HeaderMessageBodyProperty.cs

+ 1
- 1
src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.SuBiao/MessageBody/JT808_0x9208.cs 查看文件

@@ -137,7 +137,7 @@ namespace JT808.Protocol.Extensions.SuBiao.MessageBody
writer.WriteByte(value.AlarmIdentification.AttachCount);
writer.WriteByte(value.AlarmIdentification.Retain);
writer.WriteString(value.AlarmId.PadRight(32, '\0'));
writer.WriteArray(Retain);
writer.WriteArray(value.Retain);
}
}
}

+ 3
- 1
src/JT808.Protocol.Test/JT808SerializerTest.cs 查看文件

@@ -52,7 +52,7 @@ namespace JT808.Protocol.Test
{
var config = new DefaultGlobalConfig("merge");
config.EnableAutoMerge = true;
config.AutoMergeTimeoutSecond = 5;
config.AutoMergeTimeoutSecond = 500;
var array = new[]
{
//分包数据第一包
@@ -67,6 +67,7 @@ namespace JT808.Protocol.Test
var package = config.GetSerializer().Deserialize(array[i - 1].ToHexBytes());
if (i == array.Length)
{
Assert.True(package.Header.MessageBodyProperty.IsMerged);
Assert.NotNull(package.Bodies);
//分包合并成功并获取消息体进行处理
if (package.Bodies is JT808_0x0104 _0x0104 && _0x0104.AnswerParamsCount > 0)
@@ -86,6 +87,7 @@ namespace JT808.Protocol.Test
var package = config.GetSerializer().Deserialize(array[i].ToHexBytes());
if (i == 0)
{
Assert.True(package.Header.MessageBodyProperty.IsMerged);
Assert.NotNull(package.Bodies);
//分包合并成功并获取消息体进行处理
if (package.Bodies is JT808_0x0104 _0x0104 && _0x0104.AnswerParamsCount > 0)


+ 1
- 1
src/JT808.Protocol/Internal/DefaultMerger.cs 查看文件

@@ -41,7 +41,6 @@ namespace JT808.Protocol.Internal
/// <inheritdoc/>
public bool TryMerge(JT808Header header, byte[] data, IJT808Config config, out JT808Bodies body)
{
// TODO: 添加SplitPackages缓存超时,达到阈值时移除该项缓存
body = null;
var timeoutKey = GenerateKey(header.TerminalPhoneNo, header.MsgId);
if (!CheckTimeout(timeoutKey)) return false;
@@ -65,6 +64,7 @@ namespace JT808.Protocol.Internal
if (config.MsgIdFactory.TryGetValue(header.MsgId, out var value) && value is JT808Bodies instance)
{
body = instance.DeserializeExt<JT808Bodies>(ref reader, config);
header.MessageBodyProperty.IsMerged = true;
return true;
}
}


+ 5
- 0
src/JT808.Protocol/JT808.Protocol.xml 查看文件

@@ -6089,6 +6089,11 @@
false-0 消息头中无消息包封装项字段。
</summary>
</member>
<member name="P:JT808.Protocol.JT808HeaderMessageBodyProperty.IsMerged">
<summary>
当<see cref="P:JT808.Protocol.JT808HeaderMessageBodyProperty.IsPackage"/>为true时,表示是否已自动合并为完整的包
</summary>
</member>
<member name="P:JT808.Protocol.JT808HeaderMessageBodyProperty.Encrypt">
<summary>
加密标识,0为不加密


+ 4
- 0
src/JT808.Protocol/JT808HeaderMessageBodyProperty.cs 查看文件

@@ -91,6 +91,10 @@ namespace JT808.Protocol
/// </summary>
public bool IsPackage { get; set; } = false;
/// <summary>
/// 当<see cref="IsPackage"/>为true时,表示是否已自动合并为完整的包
/// </summary>
public bool IsMerged { get; set; }
/// <summary>
/// 加密标识,0为不加密
/// 当此三位都为 0,表示消息体不加密;
/// 当第 10 位为 1,表示消息体经过 RSA 算法加密;


Loading…
取消
儲存