public virtual PingApiResponse Ping() { var ret = new PingApiResponse(); var workers = _serviceProvider.GetServices <IHostedService>(); foreach (var iWorker in workers) { var backgroundWorker = iWorker as BaseBackgroundWorker; if (backgroundWorker == null) { continue; } var newWorker = new BackgroundWorkerPingModel { IsDisabled = backgroundWorker.IsDisabled, IsRunning = backgroundWorker.IsRunning, Name = backgroundWorker.GetType().FullName, ServiceUpTimeInSec = Convert.ToInt64(backgroundWorker.ServiceUpTime.TotalSeconds), IsCancellationRequested = backgroundWorker.IsCancellationRequested }; var iterateBackgroundWorker = backgroundWorker as IIterateBackgroundMetrics; if (iterateBackgroundWorker != null) { var iterateMetrics = new IterateBackgroundPingModel { TaskDelayInMilliseconds = Convert.ToInt64(iterateBackgroundWorker.TaskDelay.TotalMilliseconds), IteratedCount = iterateBackgroundWorker.IteratedCount, SuccessIteratedCount = iterateBackgroundWorker.SuccessIteratedCount, LastIterationStartDateTime = iterateBackgroundWorker.LastIterationStartDateTime, LastIterationFinishDateTime = iterateBackgroundWorker.LastIterationFinishDateTime, LastIterationDurationInMilliseconds = iterateBackgroundWorker.LastIterationDurationInMilliseconds, AvgIterationDurationInMilliseconds = iterateBackgroundWorker.AvgIterationDurationInMilliseconds }; newWorker.Iterate = iterateMetrics; } var listBackgroundWorker = backgroundWorker as IListBackgroundMetrics; if (listBackgroundWorker != null) { var listMetrics = new ListBackgroundPingModel { MaxParallelTasks = listBackgroundWorker.MaxDegreeOfParallelism, LastIterationListItemsCount = listBackgroundWorker.LastIterationListItemsCount, LastIterationListItemsProcessedCount = listBackgroundWorker.LastIterationListItemsProcessedCount, LastIterationListItemsSuccessProcessedCount = listBackgroundWorker.LastIterationListItemsSuccessProcessedCount, LastIterationListItemsLastDurationInMilliseconds = listBackgroundWorker.LastIterationListItemsLastDurationInMilliseconds, LastIterationListItemsAvgDurationInMilliseconds = listBackgroundWorker.LastIterationListItemsAvgDurationInMilliseconds, LastIterationListItemExecuteDateTime = listBackgroundWorker.LastIterationListItemExecuteDateTime }; newWorker.List = listMetrics; } ret.Services.Add(newWorker); } return(ret); }
public virtual PingApiResponse Ping() { var ret = new PingApiResponse(); var jobs = _serviceProvider.GetServices <IHostedService>(); foreach (var iJob in jobs) { var baseJob = iJob as BaseJob; if (baseJob == null) { continue; } var newWorker = new WebJobPingModel { IsEnabled = baseJob.IsEnabled, IsRunning = baseJob.IsRunning, Name = baseJob.GetType().FullName, ServiceUpTimeInSec = Convert.ToInt64(baseJob.ServiceUpTime.TotalSeconds), IsCancellationRequested = baseJob.IsCancellationRequested }; var iterateJob = baseJob as IIterateJobMetrics; if (iterateJob != null) { var iterateMetrics = new IterateJobPingModel { TaskDelayInMilliseconds = iterateJob.TaskDelayInMilliseconds, IteratedCount = iterateJob.IteratedCount, SuccessIteratedCount = iterateJob.SuccessIteratedCount, LastIterationStartDateTime = iterateJob.LastIterationStartDateTime, LastIterationFinishDateTime = iterateJob.LastIterationFinishDateTime, LastIterationDurationInMilliseconds = iterateJob.LastIterationDurationInMilliseconds, AvgIterationDurationInMilliseconds = iterateJob.AvgIterationDurationInMilliseconds }; newWorker.Iterate = iterateMetrics; } var listJob = baseJob as IListJobMetrics; if (listJob != null) { var listMetrics = new ListJobPingModel { MaxDegreeOfParallelism = listJob.MaxDegreeOfParallelism, UseSemaphoreParallelism = listJob.UseSemaphoreParallelism, LastIterationListItemsCount = listJob.LastIterationListItemsCount, LastIterationListItemsProcessedCount = listJob.LastIterationListItemsProcessedCount, LastIterationListItemsSuccessProcessedCount = listJob.LastIterationListItemsSuccessProcessedCount, LastIterationListItemsLastDurationInMilliseconds = listJob.LastIterationListItemsLastDurationInMilliseconds, LastIterationListItemsAvgDurationInMilliseconds = listJob.LastIterationListItemsAvgDurationInMilliseconds, LastIterationListItemExecuteDateTime = listJob.LastIterationListItemExecuteDateTime }; newWorker.List = listMetrics; } ret.Services.Add(newWorker); } return(ret); }