protected async Task ReceiveResponse(CloudQueueResponseDto item) { if (this.requestTrackDictionary.TryRemove(item.RequestId, out var tcs)) { if (this.responseTypeMapping.TryGetValue(item.CmdName, out var setRes)) { setRes(item.Response, tcs); } else { throw new InvalidOperationException($"Unknown cmd for request {item.RequestId}: {item.CmdName}"); } } else { Trace.TraceError($"Unknown request ID: {item.RequestId}"); ResponsePool.Put(item); } }
protected void CheckResponseFromPool(string requestId) { if (this.requestTrackDictionary.ContainsKey(requestId)) { if (ResponsePool.TryGetAndRemove(requestId, out var item)) { if (this.requestTrackDictionary.TryRemove(item.RequestId, out var tcs)) { if (this.responseTypeMapping.TryGetValue(item.CmdName, out var setRes)) { setRes(item.Response, tcs); } else { throw new InvalidOperationException($"Unknown cmd for request {item.RequestId}: {item.CmdName}"); } } else { throw new InvalidOperationException($"Task completion source for request {requestId} missing"); } } } }