InnerMessageDispatcherHelper.cs 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. 
  2. namespace ET
  3. {
  4. public static class InnerMessageDispatcherHelper
  5. {
  6. public static async ETVoid HandleIActorResponse(Session session, IActorResponse iActorResponse)
  7. {
  8. ActorMessageSenderComponent.Instance.RunMessage(iActorResponse);
  9. await ETTask.CompletedTask;
  10. }
  11. public static async ETVoid HandleIActorRequest(Session session, IActorRequest iActorRequest)
  12. {
  13. InstanceIdStruct instanceIdStruct = new InstanceIdStruct(iActorRequest.ActorId);
  14. int replyId = instanceIdStruct.Process;
  15. instanceIdStruct.Process = IdGenerater.Process;
  16. iActorRequest.ActorId = instanceIdStruct.ToLong();
  17. string address = StartProcessConfigCategory.Instance.Get(replyId).InnerAddress;
  18. Session ss = NetInnerComponent.Instance.Get(address);
  19. Entity entity = Game.EventSystem.Get(iActorRequest.ActorId);
  20. if (entity == null)
  21. {
  22. Log.Warning($"not found actor: {MongoHelper.ToJson(iActorRequest)}");
  23. ActorResponse response = new ActorResponse
  24. {
  25. Error = ErrorCode.ERR_NotFoundActor,
  26. RpcId = iActorRequest.RpcId,
  27. };
  28. ss.Reply(response);
  29. return;
  30. }
  31. MailBoxComponent mailBoxComponent = entity.GetComponent<MailBoxComponent>();
  32. if (mailBoxComponent == null)
  33. {
  34. ActorResponse response = new ActorResponse
  35. {
  36. Error = ErrorCode.ERR_ActorNoMailBoxComponent,
  37. RpcId = iActorRequest.RpcId,
  38. };
  39. ss.Reply(response);
  40. Log.Error($"actor not add MailBoxComponent: {entity.GetType().Name} {iActorRequest}");
  41. return;
  42. }
  43. await mailBoxComponent.Handle(ss, iActorRequest);
  44. }
  45. public static async ETVoid HandleIActorMessage(Session session, IActorMessage iActorMessage)
  46. {
  47. InstanceIdStruct instanceIdStruct = new InstanceIdStruct(iActorMessage.ActorId);
  48. int replyId = instanceIdStruct.Process;
  49. instanceIdStruct.Process = IdGenerater.Process;
  50. iActorMessage.ActorId = instanceIdStruct.ToLong();
  51. Entity entity = Game.EventSystem.Get(iActorMessage.ActorId);
  52. if (entity == null)
  53. {
  54. Log.Error($"not found actor: {MongoHelper.ToJson(iActorMessage)}");
  55. return;
  56. }
  57. MailBoxComponent mailBoxComponent = entity.GetComponent<MailBoxComponent>();
  58. if (mailBoxComponent == null)
  59. {
  60. Log.Error($"actor not add MailBoxComponent: {entity.GetType().Name} {iActorMessage}");
  61. return;
  62. }
  63. Session ss = NetInnerComponent.Instance.Get(replyId);
  64. await mailBoxComponent.Handle(ss, iActorMessage);
  65. }
  66. }
  67. }