ActorTask.cs 723 B

1234567891011121314151617181920212223242526272829303132333435
  1. using System.Threading.Tasks;
  2. namespace ETModel
  3. {
  4. public struct ActorTask
  5. {
  6. public ActorMessageSender MessageSender;
  7. public IActorMessage message;
  8. public TaskCompletionSource<IResponse> Tcs;
  9. public async Task<IResponse> Run()
  10. {
  11. Session session = Game.Scene.GetComponent<NetInnerComponent>().Get(this.MessageSender.Address);
  12. this.message.ActorId = this.MessageSender.ActorId;
  13. IResponse response = await session.Call(message);
  14. if (response.Error != ErrorCode.ERR_NotFoundActor)
  15. {
  16. if (this.Tcs != null)
  17. {
  18. this.Tcs?.SetResult(response);
  19. }
  20. }
  21. return response;
  22. }
  23. public void RunFail(int error)
  24. {
  25. this.Tcs?.SetException(new RpcException(error, ""));
  26. }
  27. }
  28. }