public ETTask <IResponse> Call(IRequest request) { int rpcId = ++RpcId; var tcs = new ETTaskCompletionSource <IResponse>(); this.requestCallback[rpcId] = (response) => { try { if (ErrorCode.IsRpcNeedThrowException(response.Error)) { throw new RpcException(response.Error, response.Message); } tcs.TrySetResult(response); } catch (Exception e) { tcs.TrySetException(new Exception($"Rpc Error: {request.GetType().FullName}", e)); } }; request.RpcId = rpcId; this.Send(0x00, request); return(tcs.Task); }
// 4. SetResult //[DebuggerHidden] public void SetResult() { if (moveNext == null) { } else { if (promise == null) { promise = new ETTaskCompletionSource(); } promise.TrySetResult(); } }