internal async static void HandleClientUpdate(string staskId, STaskStatus status, object result) { STaskInfo info; if (!_submissionTracker.TryGetValue(staskId, out info)) { throw new Exception("Could not get task from the tracker"); } try { await Task.Run(() => info.CallbackChannel.UpdateStatus(info.ClientRequest.Id, status, result)); RemoveComplete(info.ClientRequest.Id); } catch (AggregateException ex) { throw ex; } }
public void UpdateStatus(string id, STaskStatus status, object result) { ClientRequestInfo <TResult> info; if (_requests.TryRemove(id, out info)) { switch (status) { case STaskStatus.Completed: info.CompletionSource.SetResult((TResult)result); break; case STaskStatus.Canceled: info.CompletionSource.SetCanceled(); break; case STaskStatus.Faulted: info.CompletionSource.SetException((Exception)result); break; } } }
public void UpdateStatus(string id, STaskStatus status, object result) { CoordinatorContext.HandleClientUpdate(id, status, result); }