CTT/Server/Hotfix/Module/Actor/ActorHelper.cs

34 lines
1.3 KiB
C#
Raw Normal View History

2021-04-08 20:09:59 +08:00
using System;
using System.IO;
namespace ET
{
public static class ActorHelper
{
public static IActorResponse CreateResponse(IActorRequest iActorRequest, int error)
{
Type responseType = OpcodeTypeComponent.Instance.GetResponseType(iActorRequest.GetType());
IActorResponse response = (IActorResponse)Activator.CreateInstance(responseType);
response.Error = error;
response.RpcId = iActorRequest.RpcId;
return response;
}
public static object ToActorMessage(this MemoryStream memoryStream)
{
ushort opcode = BitConverter.ToUInt16(memoryStream.GetBuffer(), 8);
Type type = OpcodeTypeComponent.Instance.GetType(opcode);
2021-06-29 11:28:15 +08:00
if (opcode < MessageSerializeHelper.PbMinOpcode)
2021-04-08 20:09:59 +08:00
{
return ProtobufHelper.FromBytes(type, memoryStream.GetBuffer(), 10, (int)memoryStream.Length - 10);
}
if (opcode >= MessageSerializeHelper.JsonMinOpcode)
{
return JsonHelper.FromJson(type, memoryStream.GetBuffer().ToStr(10, (int)(memoryStream.Length - 10)));
}
return MongoHelper.FromBson(type, memoryStream.GetBuffer(), 10, (int)memoryStream.Length - 10);
}
}
}