public async Task <List <ProcessorRuntimeStatus> > GetDetailedStatus([FromUri] string ProcessorName) { string[] validationErrors = Processor.ValidateProcessName(ProcessorName); if (null != validationErrors) { Utils.ThrowHttpError(validationErrors); } Processor processor; using (ITransaction tx = this.Svc.StateManager.CreateTransaction()) { // do we have it? ConditionalValue <Processor> cResults = await this.Svc.ProcessorStateStore.TryGetValueAsync(tx, ProcessorName); if (!cResults.HasValue) { Utils.ThrowHttpError(string.Format("Processor with the name {0} does not exist", ProcessorName)); } processor = cResults.Value; } ProcessorOperationHandlerFactory factory = new ProcessorOperationHandlerFactory(); ProcessorOperationHandlerBase operationHandler = factory.CreateHandler( this.Svc, new ProcessorOperation() { OperationType = ProcessorOperationType.RuntimeStatusCheck, ProcessorName = ProcessorName }); List <ProcessorRuntimeStatus> runtimeStatus = new List <ProcessorRuntimeStatus>(); Task <HttpResponseMessage>[] tasks = await operationHandler.ExecuteOperation <Task <HttpResponseMessage>[]>(null); await Task.WhenAll(tasks); foreach (Task <HttpResponseMessage> completedTask in tasks) { HttpResponseMessage httpResponse = completedTask.Result; if (!httpResponse.IsSuccessStatusCode) { Utils.ThrowHttpError("error aggregating status from processor partitions"); } runtimeStatus.Add(JsonConvert.DeserializeObject <ProcessorRuntimeStatus>(await httpResponse.Content.ReadAsStringAsync())); } return(runtimeStatus); }
public async Task<List<ProcessorRuntimeStatus>> GetDetailedStatus([FromUri] string ProcessorName) { string[] validationErrors = Processor.ValidateProcessName(ProcessorName); if (null != validationErrors) { Utils.ThrowHttpError(validationErrors); } Processor processor; using (ITransaction tx = this.Svc.StateManager.CreateTransaction()) { // do we have it? ConditionalResult<Processor> cResults = await this.Svc.ProcessorStateStore.TryGetValueAsync(tx, ProcessorName); if (!cResults.HasValue) { Utils.ThrowHttpError(string.Format("Processor with the name {0} does not exist", ProcessorName)); } processor = cResults.Value; } ProcessorOperationHandlerFactory factory = new ProcessorOperationHandlerFactory(); ProcessorOperationHandlerBase operationHandler = factory.CreateHandler( this.Svc, new ProcessorOperation() {OperationType = ProcessorOperationType.RuntimeStatusCheck, ProcessorName = ProcessorName}); List<ProcessorRuntimeStatus> runtimeStatus = new List<ProcessorRuntimeStatus>(); Task<HttpResponseMessage>[] tasks = await operationHandler.ExecuteOperation<Task<HttpResponseMessage>[]>(null); await Task.WhenAll(tasks); foreach (Task<HttpResponseMessage> completedTask in tasks) { HttpResponseMessage httpResponse = completedTask.Result; if (!httpResponse.IsSuccessStatusCode) { Utils.ThrowHttpError("error aggregating status from processor partitions"); } runtimeStatus.Add(JsonConvert.DeserializeObject<ProcessorRuntimeStatus>(await httpResponse.Content.ReadAsStringAsync())); } return runtimeStatus; }