54 lines
1.4 KiB
C#
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();
|
|
}
|
|
}
|
|
}
|