LogicRecvRequestMessageEvent.cs 838 B

12345678910111213141516171819202122232425262728293031
  1. using System;
  2. using System.Threading.Tasks;
  3. using Common.Network;
  4. using Model;
  5. namespace Controller
  6. {
  7. [Event(EventType.LogicRecvRequestMessage, ServerType.All)]
  8. public class LogicRecvRequestMessageEvent : IEventAsync
  9. {
  10. public async Task RunAsync(Env env)
  11. {
  12. byte[] messageBytes = env.Get<byte[]>(EnvKey.MessageBytes);
  13. AChannel channel = env.Get<AChannel>(EnvKey.Channel);
  14. ushort opcode = env.Get<ushort>(EnvKey.Opcode);
  15. MessageParseHelper.LogicParseRpcRequestMessage(messageBytes, env);
  16. try
  17. {
  18. await World.Instance.GetComponent<MessageComponent>().RunAsync(opcode, env);
  19. }
  20. catch (Exception e)
  21. {
  22. int requestId = env.Get<int>(EnvKey.RpcRequestId);
  23. World.Instance.GetComponent<NetworkComponent>().RpcException(channel, requestId, e);
  24. throw;
  25. }
  26. }
  27. }
  28. }