Exemple #1
0
        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);
        }