InnerMessageDispatcherHelper.cs 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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. long replyId = IdGenerater.GetProcessId(iActorRequest.ActorId);
  13. iActorRequest.ActorId = iActorRequest.ActorId & IdGenerater.HeadMask | IdGenerater.Head;
  14. string address = StartConfigComponent.Instance.GetProcessInnerAddress(replyId);
  15. Session ss = NetInnerComponent.Instance.Get(address);
  16. Entity entity = Game.EventSystem.Get(iActorRequest.ActorId);
  17. if (entity == null)
  18. {
  19. Log.Warning($"not found actor: {MongoHelper.ToJson(iActorRequest)}");
  20. ActorResponse response = new ActorResponse
  21. {
  22. Error = ErrorCode.ERR_NotFoundActor,
  23. RpcId = iActorRequest.RpcId,
  24. };
  25. ss.Reply(response);
  26. return;
  27. }
  28. MailBoxComponent mailBoxComponent = entity.GetComponent<MailBoxComponent>();
  29. if (mailBoxComponent == null)
  30. {
  31. ActorResponse response = new ActorResponse
  32. {
  33. Error = ErrorCode.ERR_ActorNoMailBoxComponent,
  34. RpcId = iActorRequest.RpcId,
  35. };
  36. ss.Reply(response);
  37. Log.Error($"actor not add MailBoxComponent: {entity.GetType().Name} {iActorRequest}");
  38. return;
  39. }
  40. await mailBoxComponent.Handle(ss, iActorRequest);
  41. }
  42. public static async ETVoid HandleIActorMessage(Session session, IActorMessage iActorMessage)
  43. {
  44. long replyId = IdGenerater.GetProcessId(iActorMessage.ActorId);
  45. iActorMessage.ActorId = iActorMessage.ActorId & IdGenerater.HeadMask | IdGenerater.Head;
  46. Entity entity = Game.EventSystem.Get(iActorMessage.ActorId);
  47. if (entity == null)
  48. {
  49. Log.Error($"not found actor: {MongoHelper.ToJson(iActorMessage)}");
  50. return;
  51. }
  52. MailBoxComponent mailBoxComponent = entity.GetComponent<MailBoxComponent>();
  53. if (mailBoxComponent == null)
  54. {
  55. Log.Error($"actor not add MailBoxComponent: {entity.GetType().Name} {iActorMessage}");
  56. return;
  57. }
  58. Session ss = NetInnerComponent.Instance.Get(replyId);
  59. await mailBoxComponent.Handle(ss, iActorMessage);
  60. }
  61. }
  62. }