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."); }
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); }
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()); }
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; }