55 lines
1.5 KiB
C#
55 lines
1.5 KiB
C#
|
using BITKit;
|
||
|
using Net.Serialize;
|
||
|
using Net.Share;
|
||
|
using Net.System;
|
||
|
|
||
|
namespace BITKit
|
||
|
{
|
||
|
|
||
|
public class BITSerializeAdapter : ISerializeAdapter
|
||
|
{
|
||
|
public bool IsEncrypt { get; set; }
|
||
|
public int Password { get; set; }
|
||
|
|
||
|
public byte[] OnSerializeRpc(RPCModel model)
|
||
|
{
|
||
|
for (var i = 0; i < model.pars.Length; i++)
|
||
|
{
|
||
|
var obj = model.pars[i];
|
||
|
if (!BITBinary.TryWrite(obj, out var buffer))
|
||
|
{
|
||
|
buffer = NetConvertFast2.SerializeObject(obj);
|
||
|
}
|
||
|
|
||
|
model.pars[i] = buffer;
|
||
|
}
|
||
|
|
||
|
return NetConvertFast2.SerializeModel(model);
|
||
|
}
|
||
|
|
||
|
public FuncData OnDeserializeRpc(byte[] buffer, int index, int count)
|
||
|
{
|
||
|
var model = NetConvertFast2.DeserializeModel(buffer);
|
||
|
for (var i = 0; i < model.pars.Length; i++)
|
||
|
{
|
||
|
var obj = model.pars[i];
|
||
|
if (obj is not byte[] bytes) continue;
|
||
|
var value = BITBinary.ReadAsValue(bytes);
|
||
|
model.pars[i] = value;
|
||
|
}
|
||
|
|
||
|
return model;
|
||
|
}
|
||
|
|
||
|
public byte[] OnSerializeOpt(OperationList list)
|
||
|
{
|
||
|
return NetConvertFast2.SerializeObject(list).ToArray(true);
|
||
|
}
|
||
|
|
||
|
public OperationList OnDeserializeOpt(byte[] buffer, int index, int count)
|
||
|
{
|
||
|
var segment = new Segment(buffer, index, count, false);
|
||
|
return NetConvertFast2.DeserializeObject<OperationList>(segment);
|
||
|
}
|
||
|
}
|
||
|
}
|