Files
inside_out_web_data_interac…/Test/Getf.Service.Transfer.Request.SDK/Entities/TransInfo.cs
2021-12-20 17:17:49 +08:00

54 lines
1.4 KiB
C#

using Newtonsoft.Json;
using SuperSocket.ProtoBase;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Getf.Service.Transfer.Request.SDK.Entities
{
public class TransInfo : IPackageInfo
{
public TransHead Head { get; set; }
public TransBody Body { get; set; }
public TransResult TransResultInfo { get; set; }
[JsonIgnore]
public byte[] Data { get; set; }
public static TransInfo Parse(byte[] buffer)
{
var strlength = BitConverter.ToInt32(buffer, 2);
var byteLength = BitConverter.ToInt32(buffer, 6);
var json = Encoding.UTF8.GetString(buffer.Skip(10).Take(strlength).ToArray());
if (json == String.Empty)
{
return null;
}
var r = JsonConvert.DeserializeObject<TransInfo>(json);
r.Data = buffer.Skip(10 + strlength).Take(byteLength).ToArray();
return r;
}
public byte[] ToByte()
{
List<byte> bufferHead = new List<byte>();
bufferHead.AddRange(Encoding.UTF8.GetBytes("@@"));
List<byte> bufferBody = new List<byte>();
var json = JsonConvert.SerializeObject(this);
bufferBody.AddRange(Encoding.UTF8.GetBytes(json));
var strLength = bufferBody.Count;
if (Data != null)
{
bufferBody.AddRange(Data);
}
bufferHead.AddRange(BitConverter.GetBytes(strLength));
bufferHead.AddRange(BitConverter.GetBytes(Data == null ? 0 : Data.Length));
bufferHead.AddRange(bufferBody);
return bufferHead.ToArray();
}
}
}