public void CommitTransaction()
 {
     transactionFlag = TransactionFlag.NoTransaction;
     this.loadFlow.UpdateLoadFlow(TransactionTopology);
     Topology = TransactionTopology;
     ProviderTopologyConnectionDelegate?.Invoke(Topology);
 }
        public bool PrepareForTransaction()
        {
            bool success = true;

            try
            {
                logger.LogInfo($"Topology manager prepare for transaction started.");
                Provider.Instance.MeasurementProvider.PrepareForTransaction();
                transactionFlag = TransactionFlag.InTransaction;

                if (!modelManager.TryGetAllModelEntities(
                        out transactionElementModels,
                        out transactionAllElementConnections,
                        out transactionReclosers,
                        out transactionEnergySources))
                {
                    logger.LogError($"[Model provider] Failed to get all model entities in transaction.");
                    success = false;
                }
                Provider.Instance.TopologyProvider.PrepareForTransaction();
                //Thread topologyThread = new Thread(() => PrepareTopologyForTransaction());
                //Thread measurementThread = new Thread(() => PrepareMeasurementForTransaction());

                //topologyThread.Start();
                //measurementThread.Start();
            }
            catch (Exception ex)
            {
                logger.LogInfo($"Model provider failed to prepare for transaction. Exception message: {ex.Message}");
                success = false;
            }
            return(success);
        }
 public void RollbackTransaction()
 {
     transactionElementModels         = null;
     transactionAllElementConnections = null;
     transactionEnergySources         = null;
     Provider.Instance.MeasurementProvider.RollbackTransaction();
     Provider.Instance.TopologyProvider.RollbackTransaction();
     transactionFlag = TransactionFlag.NoTransaction;
     logger.LogDebug("Model provider rolled back successfully.");
 }
 public void CommitTransaction()
 {
     elementModels         = transactionElementModels;
     allElementConnections = transactionAllElementConnections;
     energySources         = transactionEnergySources;
     Provider.Instance.MeasurementProvider.CommitTransaction();
     Provider.Instance.TopologyProvider.CommitTransaction();
     transactionFlag = TransactionFlag.NoTransaction;
     logger.LogDebug("Model provider commited transaction successfully.");
 }
Exemple #5
0
 private void DoSessionsRegistryTransaction(TransactionFlag flags)
 {
     try
     {
         SessionsRegistryTransaction(flags);
     }
     catch (Exception e)
     {
         trace.Error(e, "Failed to complete telemetry storage transation");
     }
 }
        public TopologyProvider(ITopologyBuilder topologyBuilder, ILoadFlow loadFlow)
        {
            Provider.Instance.TopologyProvider = this;
            Provider.Instance.MeasurementProvider.DiscreteMeasurementDelegate += DiscreteMeasurementDelegate;

            this.loadFlow        = loadFlow;
            this.topologyBuilder = topologyBuilder;
            transactionFlag      = TransactionFlag.NoTransaction;
            Topology             = CreateTopology();
            loadFlow.UpdateLoadFlow(Topology);
        }
        public ModelProvider(IModelManager modelManager)
        {
            this.modelManager = modelManager;
            transactionFlag   = TransactionFlag.NoTransaction;

            if (!modelManager.TryGetAllModelEntities(
                    out elementModels,
                    out allElementConnections,
                    out reclosers,
                    out energySources))
            {
                logger.LogFatal($"[Model provider] Failed to get all model entities.");
            }

            Provider.Instance.ModelProvider = this;
        }
        public bool PrepareForTransaction()
        {
            bool success = true;

            try
            {
                logger.LogDebug($"Topology provider preparing for transaction.");
                TransactionTopology = CreateTopology();
                transactionFlag     = TransactionFlag.InTransaction;
            }
            catch (Exception ex)
            {
                logger.LogError($"Topology provider failed to prepare for transaction. Exception message: {ex.Message}");
                success = false;
            }
            return(success);
        }
Exemple #9
0
        public override string ToString()
        {
            var info = new StringBuilder();

            info.Append(base.ToString());
            info.Append("Approved amount: ").AppendLine(ApprovedAmount.ToString());
            info.Append("Approved Amount Currency: ").AppendLine(ApprovedAmountCurrency);
            info.Append("Batch number: ").AppendLine(BatchNumber.ToString());
            info.Append("Receipt number: ").AppendLine(ReceiptNumber.ToString());
            info.Append("RRN: ").AppendLine(ReturnReferenceNumber);
            info.Append("Authorization code: ").AppendLine(AuthorizationCode);
            info.Append("Card number: ").AppendLine(CardNumber);
            info.Append("Card holder name: ").AppendLine(CardHolderName);
            info.Append("Card company: ").AppendLine(CardCompany);
            info.Append("EMV Application Label: ").AppendLine(EmvApplicationLabel);
            info.Append("EMV Application ID: ").AppendLine(EmvApplicationId);
            info.Append("Transaction Flag: ").AppendLine(TransactionFlag.ToString());
            info.Append("Is Pin Used: ").AppendLine(IsPinUsed.ToString());

            return(info.ToString());
        }
Exemple #10
0
        private void SessionsRegistryTransaction(TransactionFlag flags)
        {
            if (disposed)
            {
                return;
            }

            using (var sessions = telemetryStorageEntry.OpenXMLSection(sessionsRegistrySectionName,
                                                                       Persistence.StorageSectionOpenFlag.ReadWrite))
            {
                var currentSessionElt = sessions.Data.
                                        Elements().
                                        Elements(sessionsRegistrySessionElementName).
                                        Where(e => GetSessionId(e) == currentSessionId).
                                        FirstOrDefault();
                if (currentSessionElt != null)
                {
                    UpdateTelemtrySessionNode(currentSessionElt);
                    if ((flags & TransactionFlag.FinalizeCurrentSession) != 0)
                    {
                        currentSessionElt.SetAttributeValue("finalized", "true");
                    }
                }

                bool sessionsAwaitingUploadingAdded = false;
                lock (sync)
                {
                    var uploadedSessionsElements =
                        sessions.Data.
                        Elements().
                        Elements(sessionsRegistrySessionElementName).
                        Where(e => uploadedSessions.Contains(GetSessionId(e))).
                        ToArray();
                    foreach (var e in uploadedSessionsElements)
                    {
                        e.Remove();
                        trace.Info("submitted telemtry session {0} removed from registry", GetSessionId(e));
                    }
                    uploadedSessions.Clear();

                    foreach (var sessionElement in
                             sessions.Data.
                             Elements().
                             Elements(sessionsRegistrySessionElementName).
                             Where(e => IsFinalizedOrOldUnfinalizedSession(e)))
                    {
                        var id = GetSessionId(sessionElement);
                        if (!sessionsAwaitingUploading.ContainsKey(id))
                        {
                            sessionsAwaitingUploading.Add(id, new XElement(sessionElement));
                            trace.Info("new telemetry session {0} read from registry and is awaiting submission", id);
                            sessionsAwaitingUploadingAdded = true;
                        }
                    }
                }
                if (sessionsAwaitingUploadingAdded)
                {
                    sessionsAwaitingUploadingChanged.TrySetResult(1);
                }
            }
        }
 public void RollbackTransaction()
 {
     TransactionTopology = null;
     transactionFlag     = TransactionFlag.NoTransaction;
 }