using JT808.Protocol.Extensions;
using JT808.Protocol.Formatters;
using JT808.Protocol.MessagePack;
using System;
namespace JT808.Protocol.MessageBody
{
///
/// 电子运单上报
/// 0x0701
///
public class JT808_0x0701 : JT808Bodies, IJT808MessagePackFormatter
{
///
/// 电子运单长度
///
public uint ElectronicWaybillLength { get; set; }
public byte[] ElectronicContent { get; set; }
///
/// 电子运单内容
/// 注意:需要具体的实现
///
public JT808_0x0701_CustomBodyBase ElectronicContentObj { get; set; }
public JT808_0x0701 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
{
JT808_0x0701 jT808_0X0701 = new JT808_0x0701();
jT808_0X0701.ElectronicWaybillLength = reader.ReadUInt32();
jT808_0X0701.ElectronicContent = reader.ReadArray((int)jT808_0X0701.ElectronicWaybillLength).ToArray();
return jT808_0X0701;
}
public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0701 value, IJT808Config config)
{
writer.Skip(4, out int skipPosition);
object obj = config.GetMessagePackFormatterByType(value.ElectronicContentObj.GetType());
JT808MessagePackFormatterResolverExtensions.JT808DynamicSerialize(obj, ref writer, value.ElectronicContentObj, config);
int contentLength = writer.GetCurrentPosition() - skipPosition - 4;
writer.WriteInt32Return(contentLength, skipPosition);
}
}
}