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(json); r.Data = buffer.Skip(10 + strlength).Take(byteLength).ToArray(); return r; } public byte[] ToByte() { List bufferHead = new List(); bufferHead.AddRange(Encoding.UTF8.GetBytes("@@")); List bufferBody = new List(); 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(); } } }