init commit all code
This commit is contained in:
@@ -0,0 +1,76 @@
|
||||
|
||||
using Newtonsoft.Json;
|
||||
using SuperSocket.ProtoBase;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace Getf.Service.Transfer.Request.SDK.Entities
|
||||
{
|
||||
public class ReceiveFilter : FixedHeaderReceiveFilter<TransInfo>
|
||||
{
|
||||
public ReceiveFilter() : base(10)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
protected override int GetBodyLengthFromHeader(IBufferStream bufferStream, int length)
|
||||
{
|
||||
bufferStream.ReadInt16();
|
||||
var len = GetStrLength(bufferStream) + GetDataLength(bufferStream);
|
||||
return len;
|
||||
}
|
||||
|
||||
public override TransInfo ResolvePackage(IBufferStream bufferStream)
|
||||
{
|
||||
((Stream)bufferStream).Position = 2;
|
||||
var strLength = GetStrLength(bufferStream);
|
||||
var dataLength = GetDataLength(bufferStream);
|
||||
var allLength = strLength + dataLength;
|
||||
|
||||
|
||||
byte[] buffer = new byte[strLength];
|
||||
bufferStream.Read(buffer, 0, strLength);
|
||||
var json = Encoding.UTF8.GetString(buffer);
|
||||
var r = JsonConvert.DeserializeObject<TransInfo>(json);
|
||||
if (r == null)
|
||||
{
|
||||
return new TransInfo();
|
||||
}
|
||||
buffer = new byte[dataLength];
|
||||
bufferStream.Read(buffer, 0, dataLength);
|
||||
r.Data = buffer;
|
||||
return r;
|
||||
}
|
||||
|
||||
/*protected override TransInfo ResolveRequestInfo(ArraySegment<byte> header, byte[] bodyBuffer, int offset, int length)
|
||||
{
|
||||
var strLength = BitConverter.ToInt32(header.Array, header.Offset + 2);
|
||||
var dataLength = BitConverter.ToInt32(header.Array, header.Offset + 6);
|
||||
|
||||
var json = Encoding.UTF8.GetString(bodyBuffer.Skip(offset).Take(strLength).ToArray());
|
||||
var r = JsonConvert.DeserializeObject<TransInfo>(json);
|
||||
r.Data = bodyBuffer.Skip(offset + strLength).Take(dataLength).ToArray();
|
||||
return r;
|
||||
}*/
|
||||
|
||||
private int GetStrLength(IBufferStream bufferStream)
|
||||
{
|
||||
byte[] buffer = new byte[4];
|
||||
bufferStream.Read(buffer, 0, 4);
|
||||
var r = BitConverter.ToInt32(buffer, 0);
|
||||
return r;
|
||||
}
|
||||
|
||||
private int GetDataLength(IBufferStream bufferStream)
|
||||
{
|
||||
byte[] buffer = new byte[4];
|
||||
bufferStream.Read(buffer, 0, 4);
|
||||
var r = BitConverter.ToInt32(buffer, 0);
|
||||
return r;
|
||||
}
|
||||
}
|
||||
}
|
||||
18
Test/Getf.Service.Transfer.Request.SDK/Entities/TransBody.cs
Normal file
18
Test/Getf.Service.Transfer.Request.SDK/Entities/TransBody.cs
Normal file
@@ -0,0 +1,18 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace Getf.Service.Transfer.Request.SDK.Entities
|
||||
{
|
||||
public class TransBody
|
||||
{
|
||||
public string TargetAppID { get; set; }
|
||||
public string AppID { get; set; }
|
||||
public string AppSecret { get; set; }
|
||||
public string Action { get; set; }
|
||||
public string Param { get; set; }
|
||||
public string Key { get; set; }
|
||||
public string Url { get; set; }
|
||||
}
|
||||
}
|
||||
26
Test/Getf.Service.Transfer.Request.SDK/Entities/TransHead.cs
Normal file
26
Test/Getf.Service.Transfer.Request.SDK/Entities/TransHead.cs
Normal file
@@ -0,0 +1,26 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace Getf.Service.Transfer.Request.SDK.Entities
|
||||
{
|
||||
public class TransHead
|
||||
{
|
||||
public string AppID { get; set; }
|
||||
public string AppSecret { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 1 注册 2 请求
|
||||
/// </summary>
|
||||
public int Type { get; set; }
|
||||
|
||||
public string Param { get; set; }
|
||||
|
||||
public string ServiceSecret { get; set; }
|
||||
|
||||
public long TimeStamp { get; set; }
|
||||
|
||||
public string Sign { get; set; }
|
||||
}
|
||||
}
|
||||
53
Test/Getf.Service.Transfer.Request.SDK/Entities/TransInfo.cs
Normal file
53
Test/Getf.Service.Transfer.Request.SDK/Entities/TransInfo.cs
Normal file
@@ -0,0 +1,53 @@
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace Getf.Service.Transfer.Request.SDK.Entities
|
||||
{
|
||||
public class TransResult
|
||||
{
|
||||
public string Key { get; set; }
|
||||
|
||||
public int Code { get; set; }
|
||||
|
||||
public string Message { get; set; }
|
||||
|
||||
public string Data { get; set; }
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user