ActorTask.cs 693 B

1234567891011121314151617181920212223242526272829
  1. using System.Threading.Tasks;
  2. namespace Model
  3. {
  4. public struct ActorTask
  5. {
  6. public ActorProxy proxy;
  7. public MessageObject message;
  8. public TaskCompletionSource<IResponse> Tcs;
  9. public async Task<IResponse> Run()
  10. {
  11. ActorRequest request = new ActorRequest() { Id = this.proxy.Id, AMessage = this.message };
  12. ActorResponse response = (ActorResponse)await this.proxy.RealCall(request, this.proxy.CancellationTokenSource.Token);
  13. if (response.Error != ErrorCode.ERR_NotFoundActor)
  14. {
  15. this.Tcs?.SetResult((IResponse)response.AMessage);
  16. }
  17. return response;
  18. }
  19. public void RunFail(int error)
  20. {
  21. this.Tcs?.SetException(new RpcException(error, ""));
  22. }
  23. }
  24. }