ActorHelper.cs 1.3 KB

12345678910111213141516171819202122232425262728293031323334
  1. using System;
  2. using System.IO;
  3. namespace ET
  4. {
  5. public static class ActorHelper
  6. {
  7. public static IActorResponse CreateResponse(IActorRequest iActorRequest, int error)
  8. {
  9. Type responseType = OpcodeTypeComponent.Instance.GetResponseType(iActorRequest.GetType());
  10. IActorResponse response = (IActorResponse)Activator.CreateInstance(responseType);
  11. response.Error = error;
  12. response.RpcId = iActorRequest.RpcId;
  13. return response;
  14. }
  15. public static object ToActorMessage(this MemoryStream memoryStream)
  16. {
  17. ushort opcode = BitConverter.ToUInt16(memoryStream.GetBuffer(), 8);
  18. Type type = OpcodeTypeComponent.Instance.GetType(opcode);
  19. if (opcode < OpcodeRangeDefine.PbMaxOpcode)
  20. {
  21. return ProtobufHelper.FromBytes(type, memoryStream.GetBuffer(), 10, (int)memoryStream.Length - 10);
  22. }
  23. if (opcode >= OpcodeRangeDefine.JsonMinOpcode)
  24. {
  25. return JsonHelper.FromJson(type, memoryStream.GetBuffer().ToStr(10, (int)(memoryStream.Length - 10)));
  26. }
  27. return MongoHelper.FromBson(type, memoryStream.GetBuffer(), 10, (int)memoryStream.Length - 10);
  28. }
  29. }
  30. }