public IBulbCacheReadObject SetUnknownStatus(Guid accountId, Guid statusId, DateTime processDate) { var signal = BulbSignal.CreateUnknown(accountId, processDate); var data = ProlongOrChangeStatus(signal, statusId); UpdateParentByChild(data); return(data); }
protected void CalculateComponentEventsStatus(Guid accountId, Guid eventsStatusId) { var processDate = DateTime.Now; var eventService = Context.EventService; var statusService = Context.BulbService; var request = new AccountCacheRequest() { AccountId = accountId, ObjectId = eventsStatusId }; // получаем объект для записи, чтобы заблокировать доступ, но ничего не пишем using (var data = AllCaches.StatusDatas.Write(request)) { if (data.Actual(processDate)) { // событий не было вообще if (data.LastEventId == null) { return; } // проверим, что событие актуально var lastEvent = eventService.GetEventCacheOrNullById(accountId, data.LastEventId.Value); if (lastEvent != null) { bool isActual = EventImportanceHelper.Get(data.Status) == lastEvent.Importance && lastEvent.ActualDate >= processDate; if (isActual) { // ничего не изменилось, статус актуален return; } } } // ищем событие, которое пересекается со статусом var nextEvent = eventService.GetDangerousEvent( accountId, data.ComponentId.Value, processDate); if (nextEvent != null) { var noSignalImportance = Api.EventImportance.Unknown; var signal = BulbSignal.Create(processDate, nextEvent, noSignalImportance, accountId); statusService.SetSignal(data.Id, signal); return; } // нет актуальных событий var unknownSignal = BulbSignal.CreateUnknown(accountId, processDate); statusService.SetSignal(eventsStatusId, unknownSignal); } }
protected IBulbCacheReadObject UpdateEnableOrDisableStatusData(IMetricCacheReadObject metric) { var statusService = Context.BulbService; IBulbCacheReadObject data = null; var processDate = DateTime.Now; if (metric.CanProcess) { var unknownSignal = BulbSignal.CreateUnknown(metric.AccountId, processDate); data = statusService.SetSignal(metric.StatusDataId, unknownSignal); } else { var disableSignal = BulbSignal.CreateDisable(metric.AccountId, processDate); data = statusService.SetSignal(metric.StatusDataId, disableSignal); } //Context.ComponentService.CalculateAllStatuses(metric.AccountId, metric.ComponentId); return(data); }
public void CalculateByChilds(Guid accountId, Guid statusId, List <Guid> childs) { var processDate = DateTime.Now; var request = new AccountCacheRequest() { AccountId = accountId, ObjectId = statusId }; IBulbCacheReadObject rBulb = null; using (var statusData = AllCaches.StatusDatas.Write(request)) { var childsList = new List <IBulbCacheReadObject>(); foreach (var childId in childs) { var childRequest = new AccountCacheRequest() { AccountId = accountId, ObjectId = childId }; var child = AllCaches.StatusDatas.Find(childRequest); // Disabled и Unknown не влияют на родителей if (child != null && child.Status != MonitoringStatus.Disabled && child.Status != MonitoringStatus.Unknown) { childsList.Add(child); } } var mostDandger = childsList.OrderByDescending(x => x.Status).FirstOrDefault(); if (mostDandger == null) { var signal = BulbSignal.CreateUnknown(accountId, processDate); rBulb = ProlongOrChangeStatus(signal, statusId); } else { var signal = BulbSignal.CreateFromChild(processDate, mostDandger); rBulb = ProlongOrChangeStatus(signal, statusId); } } UpdateParentByChild(rBulb); }
public void EnableMetric(Guid accountId, Guid metricId) { var cache = new AccountCache(accountId); IMetricCacheReadObject metricRead = null; // изменим метрику using (var metric = cache.Metrics.Write(metricId)) { metricRead = metric; metric.Enable = true; metric.BeginSave(); } // обновим колбаски var statusService = Context.BulbService; var processDate = DateTime.Now; var unknownSignal = BulbSignal.CreateUnknown(accountId, processDate); var data = statusService.SetSignal(metricRead.StatusDataId, unknownSignal); Context.ComponentService.CalculateAllStatuses(accountId, metricRead.ComponentId); // return data; }
public IBulbCacheReadObject Enable(Guid accountId, Guid unitTestId) { var cache = new AccountCache(accountId); IUnitTestCacheReadObject unitTestRead = null; // изменим юнит-тест using (var unitTest = cache.UnitTests.Write(unitTestId)) { unitTestRead = unitTest; unitTest.Enable = true; unitTest.BeginSave(); } // обновим колбаски var statusService = Context.BulbService; var processDate = DateTime.Now; var unknownSignal = BulbSignal.CreateUnknown(accountId, processDate); var data = statusService.SetSignal(unitTestRead.StatusDataId, unknownSignal); Context.ComponentService.CalculateAllStatuses(accountId, unitTestRead.ComponentId); return(data); }