public void LogStore(StoreTaskDetails storeDetail) { Console.WriteLine(string.Format("{0} for {1} took {2} seconds. {3}", new object[4] { (object)storeDetail.Command.GetType().Name, (object)storeDetail.Store.Name, (object)storeDetail.Elapsed.TotalSeconds, storeDetail.Success ? (object)"Successful" : (object)"Failed" })); }
public void LogCost(StoreTaskDetails storeDetail, IOperationCost operationCost, int groupLevel) { Console.WriteLine("{0}{1,-20} {2:F1} {3:F2} msecs", new object[4] { (object)"-> ".PadLeft(groupLevel * 2), (object)operationCost.Operation, (object)operationCost.Cost, (object)operationCost.ElapsedMSecs }); }
private void VisitCosts(StoreTaskDetails storeDetail, IOperationCost operationCost, int groupLevel, IResultLogger[] loggers) { Write(loggers, logger => logger.LogCost(storeDetail, operationCost, groupLevel)); var isGroupLevel = operationCost is GroupOperationCost; if (isGroupLevel) { foreach (IOperationCost stepCost in ((GroupOperationCost)operationCost).StepCosts) { VisitCosts(storeDetail, stepCost, groupLevel + 1, loggers); } } }
public void LogCost(StoreTaskDetails storeDetail, IOperationCost operationCost, int groupLevel) { EnsureHeadings(); WriteLine( storeDetail.Store.Name, storeDetail.Command.GetType().Name, $"{storeDetail.Elapsed.TotalSeconds:F2}", storeDetail.Success ? "Successful" : "Failed", groupLevel.ToString(), operationCost.Operation, $"{operationCost.Cost:F2}", $"{operationCost.ElapsedMSecs:F2}"); }
public StoreTaskDetails Run(RunDetails runDetails, IStoreCommand command, IStore store, CancellationToken cancellationToken) { Stopwatch sw = new Stopwatch(); sw.Start(); Task <GroupOperationCost> task = command.DoAsync(store, cancellationToken); StoreTaskDetails taskDetails = new StoreTaskDetails(command, store, task); task.ContinueWith(t => { sw.Stop(); taskDetails.Elapsed = sw.Elapsed; if (task.IsCompleted) { taskDetails.Cost = task.Result; } }, cancellationToken); return(taskDetails); }
public void LogStore(StoreTaskDetails storeDetail) { // Nothing to do here - we're writing a single line type to make it easier to work with the data }