public async Task <ProcessingResponse> ProcessRequest(RequestData requestData) { var inputTransmitter = new InputTransmitterAsync(requestData.ThingNames); var outputTransmitter = new OutputTransmitterAsync(); var simpleTask = new SimpleTask( id: Guid.NewGuid(), executionsNumber: 1, delayTime: TimeSpan.Zero ); ServiceStatus status = ( await simpleTask.ExecuteAsync(requestData, inputTransmitter, outputTransmitter) ).Single(); IReadOnlyList <IReadOnlyList <RatingDataContainer> > results = outputTransmitter.GetResults(); var response = new ProcessingResponse { Metadata = new ResponseMetadata { CommonResultsNumber = results.Sum(rating => rating.Count), CommonResultCollectionsNumber = results.Count, ResultStatus = status, OptionalData = CreateOptionalData() }, RatingDataContainers = results }; return(response); }
public async Task <ProcessingResponse> ProcessRequest(RequestData requestData) { var builderDirector = ShellAsync.CreateBuilderDirector( XmlConfigCreator.TransformConfigToXDocument(requestData.ConfigurationXml) ); var shell = builderDirector.MakeShell(); var inputTransmitter = new CInputTransmitterAsync(requestData.ThingNames); shell.InputManagerAsync.Add(inputTransmitter); var outputTransmitter = new OutputTransmitterAsync(); shell.OutputManagerAsync.Add(outputTransmitter); ServiceStatus status = await shell.Run("Processing response"); var results = outputTransmitter.GetResults(); var response = new ProcessingResponse { MetaData = new ResponseMetaData { CommonResultsNumber = results.Aggregate( 0, (counter, rating) => counter + rating.Count ), CommonResultCollectionsNumber = results.Count, ResultStatus = status, OptionalData = CreateOptionalData() }, RatingDataContainers = results }; return(response); }