InnerMessageDispatcherHelper.cs 2.4 KB

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