Пример #1
0
        /// <summary>
        /// statistic event override
        /// </summary>
        /// <param name="event"></param>
        public void Write(StatisticEvent <int> @event)
        {
            if (@event.Metric != StatisticType.WorkersLog)
            {
                return;
            }

            lock (_pipelineId)
            {
                var metric = new ActiveWorkersLogMessage
                {
                    Timestamp     = DateTime.Now,
                    PipelineId    = _pipelineId,
                    ActiveWorkers = @event.Value
                };

                _storage.Value.AddToList(new StorageKey(_pipelineId, $"log:{@event.Metric}"), metric);

                if (_dispatcherLock.IsLocked())
                {
                    return;
                }

                _dispatcherLock.Lock();

                if (_taskDispatcher == null)
                {
                    _taskDispatcher = new BackgroundTaskDispatcher(new StorageContext(_storage.Value));
                }

                _taskDispatcher.StartNew(new ActiveWorkersLogCleanupTask(_dispatcherLock, new StorageKey(_pipelineId, $"log:{@event.Metric}")));
            }
        }
 public OperationManager(IUnitOfWork unitOfWork, ILogger <OperationManager> logger, IBackgroundTaskDispatcher dispatcher, IServiceProvider serviceProvider)
 {
     _operationRepository = unitOfWork.OperationRepository;
     _logger          = logger;
     _dispatcher      = dispatcher;
     _serviceProvider = serviceProvider;
 }