示例#1
0
        public async Task UpdateConsumer(long consumer, long outageId)
        {
            while (!ReliableDictionariesInitialized)
            {
                await Task.Delay(1000);
            }

            using (var unitOfWork = new UnitOfWork())
            {
                try
                {
                    var consumerHistoricals = new List <ConsumerHistorical>(1);

                    if (await UnenergizedConsumers.ContainsKeyAsync(consumer))
                    {
                        consumerHistoricals.Add(new ConsumerHistorical()
                        {
                            OutageId = outageId, ConsumerId = consumer, OperationTime = DateTime.Now, DatabaseOperation = DatabaseOperation.UPDATE
                        });
                        //await UnenergizedConsumers.SetAsync(consumer, 0);
                    }

                    unitOfWork.ConsumerHistoricalRepository.AddRange(consumerHistoricals);
                    unitOfWork.Complete();
                }
                catch (Exception e)
                {
                    string message = $"{baseLogString} UpdateConsumer => Exception: {e.Message}";
                    Logger.LogError(message, e);
                }
            }
        }
        public async Task Commit()
        {
            try
            {
                this.unitOfWork.Complete();

                await OpenedSwitches.ClearAsync();

                await UnenergizedConsumers.ClearAsync();

                await HistoryModelChanges.ClearAsync();

                string message = $"{baseLogString} Commit => {MicroserviceNames.OmsHistoryDBManagerService} confirmed model changes.";
                Logger.LogInformation(message);

                await LogAllReliableCollections();
            }
            catch (Exception e)
            {
                string message = $"{baseLogString} Commit => Exception: {e.Message}";
                Logger.LogError(message, e);
            }
            finally
            {
                this.unitOfWork.Dispose();
                this.unitOfWork = null;
            }
        }
        public async Task OnConsumerBlackedOut(List <long> consumers, long?outageId)
        {
            while (!ReliableDictionariesInitialized)
            {
                await Task.Delay(1000);
            }

            using (var unitOfWork = new UnitOfWork())
            {
                try
                {
                    var consumerHistoricals = new List <ConsumerHistorical>();

                    foreach (var consumer in consumers)
                    {
                        if (!await UnenergizedConsumers.ContainsKeyAsync(consumer))
                        {
                            consumerHistoricals.Add(new ConsumerHistorical()
                            {
                                OutageId = outageId, ConsumerId = consumer, OperationTime = DateTime.Now, DatabaseOperation = DatabaseOperation.INSERT
                            });
                            await UnenergizedConsumers.SetAsync(consumer, 0);
                        }
                    }

                    unitOfWork.ConsumerHistoricalRepository.AddRange(consumerHistoricals);
                    unitOfWork.Complete();
                }
                catch (Exception e)
                {
                    string message = $"{baseLogString} OnConsumersBlackedOut => Exception: {e.Message}";
                    Logger.LogError(message, e);
                }
            }
        }
示例#4
0
        public async Task OnConsumersEnergized(HashSet <long> consumers)
        {
            while (!ReliableDictionariesInitialized)
            {
                await Task.Delay(1000);
            }

            using (var unitOfWork = new UnitOfWork())
            {
                try
                {
                    var consumerHistoricals = new List <ConsumerHistorical>();
                    var copy             = (await UnenergizedConsumers.GetDataCopyAsync()).Keys.ToList();
                    var changedConsumers = copy.Intersect(consumers).ToList();

                    foreach (var consumer in changedConsumers)
                    {
                        var consumerHistorical = new ConsumerHistorical()
                        {
                            ConsumerId        = consumer,
                            OperationTime     = DateTime.Now,
                            DatabaseOperation = DatabaseOperation.DELETE,
                        };

                        consumerHistoricals.Add(consumerHistorical);
                    }

                    foreach (var changed in changedConsumers)
                    {
                        if (await UnenergizedConsumers.ContainsKeyAsync(changed))
                        {
                            await UnenergizedConsumers.TryRemoveAsync(changed);
                        }
                    }

                    unitOfWork.ConsumerHistoricalRepository.AddRange(consumerHistoricals);
                    unitOfWork.Complete();
                }
                catch (Exception e)
                {
                    string message = $"{baseLogString} OnConsumersEnergized => Exception: {e.Message}";
                    Logger.LogError(message, e);
                }
            }
        }
        private async Task LogAllReliableCollections()
        {
            while (!ReliableDictionariesInitialized)
            {
                await Task.Delay(1000);
            }

            StringBuilder sb = new StringBuilder();

            sb.AppendLine("Reliable Collections");

            sb.AppendLine("OpenedSwitches =>");
            var openedSwitches = await OpenedSwitches.GetEnumerableDictionaryAsync();

            foreach (var element in openedSwitches)
            {
                sb.AppendLine($"Key => {element.Key}, Value => 0x{element.Value:X16}");
            }
            sb.AppendLine();

            sb.AppendLine("UnenergizedConsumers =>");
            var unenergizedConsumers = await UnenergizedConsumers.GetEnumerableDictionaryAsync();

            foreach (var element in unenergizedConsumers)
            {
                sb.AppendLine($"Key => 0x{element.Key:X16}, Value => 0x{element.Value:X16}");
            }
            sb.AppendLine();

            sb.AppendLine("HistoryModelChanges =>");
            var historyModelChanges = await HistoryModelChanges.GetEnumerableDictionaryAsync();

            foreach (var element in historyModelChanges)
            {
                sb.AppendLine($"Key => 0x{element.Key:X16}, Value => changes count: {element.Value.Count}");
            }
            sb.AppendLine();

            Logger.LogDebug($"{baseLogString} LogAllReliableCollections => {sb}");
        }