Exemple #1
0
        private void ProcessStateManagerSingleEntityNotification(NotifyStateManagerChangedEventArgs e)
        {
            var operation = e as NotifyStateManagerSingleEntityChangedEventArgs;

            if (operation.Action == NotifyStateManagerChangedAction.Add)
            {
                var reliableStateType = operation.ReliableState.GetType();
                switch (ReliableStateKindUtils.KindOfReliableState(operation.ReliableState))
                {
                case ReliableStateKind.ReliableDictionary:
                {
                    var keyType   = reliableStateType.GetGenericArguments()[0];
                    var valueType = reliableStateType.GetGenericArguments()[1];
                    this.GetType().GetMethod("ProcessStateManagerDictionaryChangedNotification", BindingFlags.Instance | BindingFlags.NonPublic)
                    .MakeGenericMethod(keyType, valueType)
                    .Invoke(this, new object[] { operation.ReliableState });
                    break;
                }

                case ReliableStateKind.ReliableQueue:
                case ReliableStateKind.ReliableConcurrentQueue:
                default:
                    break;
                }
            }
        }
Exemple #2
0
        private async Task ProcessStateManagerRebuildNotification(NotifyStateManagerChangedEventArgs e)
        {
            int  enumerated    = 0;
            bool dataByIdFound = false;
            var  timer         = Stopwatch.StartNew();

            ServiceFabricPersistenceEventSource.Log.ProcessStateManagerRebuildNotification();
            var operation = e as NotifyStateManagerRebuildEventArgs;

            using (var enumerator = operation.ReliableStates.GetAsyncEnumerator())
            {
                while (await enumerator.MoveNextAsync(this.cancellationToken))
                {
                    enumerated++;
                    if (enumerator.Current is IReliableDictionary <long, WinFabPersistence.PersistedData> )
                    {
                        var dictionary = (IReliableDictionary <long, WinFabPersistence.PersistedData>)enumerator.Current;
                        this.SetFlagsForReliableDictionary(dictionary);

                        dictionary.RebuildNotificationAsyncCallback = this.OnDictionaryRebuildNotificationHandlerAsync;

                        // Ensure that the handler is registered only once by doing -= followed by +=
                        // It is safe to do -= even if no handler has been added.
                        dictionary.DictionaryChanged -= this.OnDictionaryChangedHandler;
                        dictionary.DictionaryChanged += this.OnDictionaryChangedHandler;

                        dataByIdFound = true;
                        ServiceFabricPersistenceEventSource.Log.ProcessStateManagerRebuildNotification_ReliableDictionaryFound(dictionary.Name.ToString());
                    }
                }
            }

            ServiceFabricPersistenceEventSource.Log.ProcessStateManagerRebuildNotificationCompleted(enumerated, dataByIdFound, timer.ElapsedMilliseconds);
        }
        private async Task InitializeReliableCollections(NotifyStateManagerChangedEventArgs e)
        {
            if (e.Action == NotifyStateManagerChangedAction.Add)
            {
                var    operation         = e as NotifyStateManagerSingleEntityChangedEventArgs;
                string reliableStateName = operation.ReliableState.Name.AbsolutePath;

                if (reliableStateName == ReliableDictionaryNames.MonitoredHeadBreakerMeasurements)
                {
                    this.monitoredHeadBreakerMeasurements = await ReliableDictionaryAccess <long, DiscreteModbusData> .Create(stateManager, ReliableDictionaryNames.MonitoredHeadBreakerMeasurements);

                    this.isMonitoredHeadBreakerMeasurementsInitialized = true;

                    string debugMessage = $"{baseLogString} OnStateManagerChangedHandler => '{ReliableDictionaryNames.MonitoredHeadBreakerMeasurements}' ReliableDictionaryAccess initialized.";
                    Logger.LogDebug(debugMessage);
                }
                else if (reliableStateName == ReliableDictionaryNames.StartedIsolationAlgorithms)
                {
                    this.startedIsolationAlgorithms = await ReliableDictionaryAccess <long, IsolationAlgorithm> .Create(stateManager, ReliableDictionaryNames.StartedIsolationAlgorithms);

                    this.isStartedIsolationAlgorithmsInitialized = true;

                    string debugMessage = $"{baseLogString} OnStateManagerChangedHandler => '{ReliableDictionaryNames.StartedIsolationAlgorithms}' ReliableDictionaryAccess initialized.";
                    Logger.LogDebug(debugMessage);
                }
            }
        }
        private async void OnStateManagerChangedHandler(object sender, NotifyStateManagerChangedEventArgs e)
        {
            if (e.Action == NotifyStateManagerChangedAction.Add)
            {
                var    operation         = e as NotifyStateManagerSingleEntityChangedEventArgs;
                string reliableStateName = operation.ReliableState.Name.AbsolutePath;

                if (reliableStateName == ReliableDictionaryNames.OutageTopologyModel)
                {
                    this.outageTopologyModel = await ReliableDictionaryAccess <string, OutageTopologyModel> .Create(stateManager, ReliableDictionaryNames.OutageTopologyModel);

                    this.isOutageTopologyModelInitialized = true;

                    string debugMessage = $"{baseLogString} OnStateManagerChangedHandler => '{ReliableDictionaryNames.OutageTopologyModel}' ReliableDictionaryAccess initialized.";
                    Logger.LogDebug(debugMessage);
                }
                else if (reliableStateName == ReliableDictionaryNames.CommandedElements)
                {
                    this.commandedElements = await ReliableDictionaryAccess <long, CommandedElement> .Create(stateManager, ReliableDictionaryNames.CommandedElements);

                    this.isCommandedElementsInitialized = true;

                    string debugMessage = $"{baseLogString} OnStateManagerChangedHandler => '{ReliableDictionaryNames.CommandedElements}' ReliableDictionaryAccess initialized.";
                    Logger.LogDebug(debugMessage);
                }
            }
        }
Exemple #5
0
        private async Task InitializeReliableCollections(NotifyStateManagerChangedEventArgs e)
        {
            if (e.Action == NotifyStateManagerChangedAction.Add)
            {
                var    operation         = e as NotifyStateManagerSingleEntityChangedEventArgs;
                string reliableStateName = operation.ReliableState.Name.AbsolutePath;

                if (reliableStateName == ReliableDictionaryNames.SimulatedOutages)
                {
                    simulatedOutages = await ReliableDictionaryAccess <long, SimulatedOutage> .Create(stateManager, ReliableDictionaryNames.SimulatedOutages);

                    this.isSimulatedOutagesInitialized = true;

                    string debugMessage = $"{baseLogString} OnStateManagerChangedHandler => '{ReliableDictionaryNames.SimulatedOutages}' ReliableDictionaryAccess initialized.";
                    Logger.LogDebug(debugMessage);
                }
                else if (reliableStateName == ReliableDictionaryNames.MonitoredIsolationPoints)
                {
                    monitoredIsolationPoints = await ReliableDictionaryAccess <long, MonitoredIsolationPoint> .Create(stateManager, ReliableDictionaryNames.MonitoredIsolationPoints);

                    this.isMonitoredIsolationPointsInitialized = true;

                    string debugMessage = $"{baseLogString} OnStateManagerChangedHandler => '{ReliableDictionaryNames.MonitoredIsolationPoints}' ReliableDictionaryAccess initialized.";
                    Logger.LogDebug(debugMessage);
                }
            }
        }
        private async Task InitializeReliableCollections(NotifyStateManagerChangedEventArgs e)
        {
            if (e.Action == NotifyStateManagerChangedAction.Add)
            {
                var operation = e as NotifyStateManagerSingleEntityChangedEventArgs;
                string reliableStateName = operation.ReliableState.Name.AbsolutePath;

                if (reliableStateName == ReliableQueueNames.ReadCommandQueue)
                {
                    this.readCommandQueue = await ReliableQueueAccess<ModbusFunction>.Create(stateManager, ReliableQueueNames.ReadCommandQueue);
                    this.isReadCommandQueueInitialized = true;

                    string debugMessage = $"{baseLogString} OnStateManagerChangedHandler => '{ReliableQueueNames.ReadCommandQueue}' ReliableQueueAccess initialized.";
                    Logger.LogDebug(debugMessage);
                }
                else if (reliableStateName == ReliableQueueNames.WriteCommandQueue)
                {
                    this.writeCommandQueue = await ReliableQueueAccess<ModbusFunction>.Create(stateManager, ReliableQueueNames.WriteCommandQueue);
                    this.isWriteCommandQueueInitialized = true;

                    string debugMessage = $"{baseLogString} OnStateManagerChangedHandler => '{ReliableQueueNames.WriteCommandQueue}' ReliableQueueAccess initialized.";
                    Logger.LogDebug(debugMessage);
                }
                else if (reliableStateName == ReliableQueueNames.ModelUpdateCommandQueue)
                {
                    this.modelUpdateCommandQueue = await ReliableQueueAccess<ModbusFunction>.Create(stateManager, ReliableQueueNames.ModelUpdateCommandQueue);
                    this.isModelUpdateCommandQueueInitialized = true;

                    string debugMessage = $"{baseLogString} OnStateManagerChangedHandler => '{ReliableQueueNames.ModelUpdateCommandQueue}' ReliableQueueAccess initialized.";
                    Logger.LogDebug(debugMessage);
                }
            }
        }
        private async void OnStateManagerChangedHandler(object sender, NotifyStateManagerChangedEventArgs e)
        {
            if (e.Action == NotifyStateManagerChangedAction.Add)
            {
                var    operation         = e as NotifyStateManagerSingleEntityChangedEventArgs;
                string reliableStateName = operation.ReliableState.Name.AbsolutePath;

                if (reliableStateName == ReliableDictionaryNames.ActiveTransactions)
                {
                    activeTransactions = await ReliableDictionaryAccess <string, HashSet <string> > .Create(stateManager, ReliableDictionaryNames.ActiveTransactions);

                    isActiveTransactionsInitialized = true;

                    string debugMessage = $"{baseLogString} OnStateManagerChangedHandler => '{ReliableDictionaryNames.ActiveTransactions}' ReliableDictionaryAccess initialized.";
                    Logger.LogDebug(debugMessage);
                }
                else if (reliableStateName == ReliableDictionaryNames.TransactionEnlistmentLedger)
                {
                    transactionEnlistmentLedger = await ReliableDictionaryAccess <string, HashSet <string> > .Create(stateManager, ReliableDictionaryNames.TransactionEnlistmentLedger);

                    isTransactionEnlistmentLedgerInitialized = true;

                    string debugMessage = $"{baseLogString} OnStateManagerChangedHandler => '{ReliableDictionaryNames.TransactionEnlistmentLedger}' ReliableDictionaryAccess initialized.";
                    Logger.LogDebug(debugMessage);
                }
            }
        }
Exemple #8
0
 private void StateManager_StateManagerChanged(object sender, NotifyStateManagerChangedEventArgs e)
 {
     // state manager created
     if (e.Action == NotifyStateManagerChangedAction.Add)
     {
         Task.Run(() => DuplicateMessages(CancellationToken.None));
     }
 }
        private void StateManagerReplica_StateManagerChanged(object sender, NotifyStateManagerChangedEventArgs e)
        {
            EventHandler <NotifyStateManagerChangedEventArgs> handler = this.StateManagerChanged;

            if (handler != null)
            {
                handler(sender, e);
            }
        }
Exemple #10
0
        private void StateManager_StateManagerChanged(object sender, NotifyStateManagerChangedEventArgs e)
        {
            // TODO : check if event target inputQueue only (no need to react on over state change)

            // state manager created
            if (e.Action == NotifyStateManagerChangedAction.Add)
            {
                Task.Run(() => DuplicateMessages(CancellationToken.None));
            }
        }
        private async void OnStateManagerChangedHandler(object sender, NotifyStateManagerChangedEventArgs e)
        {
            if (e.Action == NotifyStateManagerChangedAction.Add)
            {
                var    operation         = e as NotifyStateManagerSingleEntityChangedEventArgs;
                string reliableStateName = operation.ReliableState.Name.AbsolutePath;

                if (reliableStateName == ReliableDictionaryNames.StartedIsolationAlgorithms)
                {
                    this.startedIsolationAlgorithms = await ReliableDictionaryAccess <long, IsolationAlgorithm> .Create(stateManager, ReliableDictionaryNames.StartedIsolationAlgorithms);

                    this.isStartedIsolationAlgorithmsInitialized = true;

                    string debugMessage = $"{baseLogString} OnStateManagerChangedHandler => '{ReliableDictionaryNames.StartedIsolationAlgorithms}' ReliableDictionaryAccess initialized.";
                    Logger.LogDebug(debugMessage);
                }
                else if (reliableStateName == ReliableDictionaryNames.MonitoredHeadBreakerMeasurements)
                {
                    this.monitoredHeadBreakerMeasurements = await ReliableDictionaryAccess <long, DiscreteModbusData> .Create(stateManager, ReliableDictionaryNames.MonitoredHeadBreakerMeasurements);

                    this.isMonitoredHeadBreakerMeasurementsInitialized = true;

                    string debugMessage = $"{baseLogString} OnStateManagerChangedHandler => '{ReliableDictionaryNames.MonitoredHeadBreakerMeasurements}' ReliableDictionaryAccess initialized.";
                    Logger.LogDebug(debugMessage);
                }
                else if (reliableStateName == ReliableDictionaryNames.OutageTopologyModel)
                {
                    this.outageTopologyModel = await ReliableDictionaryAccess <string, OutageTopologyModel> .Create(stateManager, ReliableDictionaryNames.OutageTopologyModel);

                    this.isOutageTopologyModelInitialized = true;

                    string debugMessage = $"{baseLogString} OnStateManagerChangedHandler => '{ReliableDictionaryNames.OutageTopologyModel}' ReliableDictionaryAccess initialized.";
                    Logger.LogDebug(debugMessage);
                }
                else if (reliableStateName == ReliableDictionaryNames.OptimumIsolationPoints)
                {
                    this.optimumIsolationPoints = await ReliableDictionaryAccess <long, long> .Create(stateManager, ReliableDictionaryNames.OptimumIsolationPoints);

                    this.isOptimumIsolationPointsInitialized = true;

                    string debugMessage = $"{baseLogString} OnStateManagerChangedHandler => '{ReliableDictionaryNames.OptimumIsolationPoints}' ReliableDictionaryAccess initialized.";
                    Logger.LogDebug(debugMessage);
                }
                else if (reliableStateName == ReliableDictionaryNames.CommandedElements)
                {
                    this.commandedElements = await ReliableDictionaryAccess <long, CommandedElement> .Create(stateManager, ReliableDictionaryNames.CommandedElements);

                    this.isCommandedElementsInitialized = true;

                    string debugMessage = $"{baseLogString} OnStateManagerChangedHandler => '{ReliableDictionaryNames.CommandedElements}' ReliableDictionaryAccess initialized.";
                    Logger.LogDebug(debugMessage);
                }
            }
        }
Exemple #12
0
 public void OnStateManagerChangedHandler(object sender, NotifyStateManagerChangedEventArgs e)
 {
     if (e.Action == NotifyStateManagerChangedAction.Rebuild)
     {
         // throw new NotImplementedException();
     }
     else
     {
         ProcessStateManagerSingleEntityNotification(e);
     }
 }
Exemple #13
0
 private async void OnStateManagerChangedHandler(object sender, NotifyStateManagerChangedEventArgs eventArgs)
 {
     try
     {
         await InitializeReliableCollections(eventArgs);
     }
     catch (FabricNotPrimaryException)
     {
         Logger.LogDebug($"{baseLogString} OnStateManagerChangedHandler => NotPrimaryException. To be ignored.");
     }
 }
Exemple #14
0
        private void OnStateManagerChangedHandler(object sender, NotifyStateManagerChangedEventArgs e)
        {
            ServiceFabricPersistenceEventSource.Log.OnStateManagerChanged(e.Action.ToString());
            if (e.Action == NotifyStateManagerChangedAction.Rebuild)
            {
                this.ProcessStateManagerRebuildNotification(e).GetAwaiter().GetResult();
                return;
            }

            this.ProcessStateManagerSingleEntityNotification(e);
        }
Exemple #15
0
        /// <summary>
        /// 可靠状态管理器事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void OnStateManagerChangeHandler(object sender, NotifyStateManagerChangedEventArgs e)
        {
            if (e.Action == NotifyStateManagerChangedAction.Rebuild)
            {
                // this.ProcessStataManagerRebuildNotification(e);

                return;
            }

            //   this.ProcessStateManagerSingleEntityNotification(e);
        }
 private void StateManager_StateManagerChanged(object sender, NotifyStateManagerChangedEventArgs e)
 {
     if (e.Action == NotifyStateManagerChangedAction.Add)
     {
         NotifyStateManagerSingleEntityChangedEventArgs args = e as NotifyStateManagerSingleEntityChangedEventArgs;
         if (args.ReliableState.Name.ToString() == "urn:" + HealthStatusDictionary)
         {
             IReliableDictionary <int, NationalCountyStats> dictionary = (IReliableDictionary <int, NationalCountyStats>)args.ReliableState;
             dictionary.DictionaryChanged += this.Dictionary_DictionaryChanged;
         }
     }
 }
Exemple #17
0
        /// <summary>
        ///     Handles the StateManagerChanged event of the StateManager control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="NotifyStateManagerChangedEventArgs" /> instance containing the event data.</param>
        private void StateManager_StateManagerChanged(object sender, NotifyStateManagerChangedEventArgs e)
        {
            NotifyStateManagerSingleEntityChangedEventArgs operation = e as NotifyStateManagerSingleEntityChangedEventArgs;

            if (operation != null && operation.Action == NotifyStateManagerChangedAction.Add)
            {
                if (operation.ReliableState is IReliableDictionary <string, UserState> )
                {
                    IReliableDictionary <string, UserState> dictionary = (IReliableDictionary <string, UserState>)operation.ReliableState;
                    dictionary.DictionaryChanged += this.Dictionary_DictionaryChanged;
                }
            }
        }
Exemple #18
0
 /// <summary>
 /// Called in response to a change on the state manager
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void OnStateManagerChangedHandler(object sender, NotifyStateManagerChangedEventArgs e)
 {
     if (e.Action == NotifyStateManagerChangedAction.Rebuild)
     {
         ProcessStateManagerRebuildNotification(e);
         return;
     }
     if (e.Action == NotifyStateManagerChangedAction.Add)
     {
         ProcessStateManagerAddNotification(e);
         return;
     }
 }
Exemple #19
0
        private async void OnStateManagerChangedHandler(object sender, NotifyStateManagerChangedEventArgs e)
        {
            if (e.Action == NotifyStateManagerChangedAction.Add)
            {
                var    operation         = e as NotifyStateManagerSingleEntityChangedEventArgs;
                string reliableStateName = operation.ReliableState.Name.AbsolutePath;
                if (reliableStateName == ReliableDictionaryNames.ActiveOutages)
                {
                    activeOutages = await ReliableDictionaryAccess <long, ActiveOutageMessage> .Create(this.stateManager, ReliableDictionaryNames.ActiveOutages);

                    this.isActiveOutagesInitialized = true;
                }
            }
        }
Exemple #20
0
        /// <summary>
        /// Called in response to an add change notification on the
        /// state manager. This indicates that a collection has been
        /// added. We use this to set our dictionary level callbacks
        /// and notification handlers.
        /// </summary>
        /// <param name="e"></param>
        private void ProcessStateManagerAddNotification(NotifyStateManagerChangedEventArgs e)
        {
            var entity = e as NotifyStateManagerSingleEntityChangedEventArgs;

            if (entity.ReliableState is IReliableDictionary <string, Order> )
            {
                var dictionary = (IReliableDictionary <string, Order>)entity.ReliableState;
                if (dictionary.Name.LocalPath == this.setName)
                {
                    dictionary.RebuildNotificationAsyncCallback = this.OnDictionaryRebuildNotificationHandlerAsync;
                    dictionary.DictionaryChanged += this.OnDictionaryChangedHandler;
                }
            }
        }
        private async void OnStateManagerChangedHandler(object sender, NotifyStateManagerChangedEventArgs e)
        {
            if (e.Action == NotifyStateManagerChangedAction.Add)
            {
                var    operation         = e as NotifyStateManagerSingleEntityChangedEventArgs;
                string reliableStateName = operation.ReliableState.Name.AbsolutePath;

                if (reliableStateName == ReliableDictionaryNames.GidToPointItemMap)
                {
                    //_ = GidToPointItemMap;
                    gidToPointItemMap = await ReliableDictionaryAccess <long, IScadaModelPointItem> .Create(stateManager, ReliableDictionaryNames.GidToPointItemMap);

                    isGidToPointItemMapInitialized = true;

                    string debugMessage = $"{baseLogString} OnStateManagerChangedHandler => '{ReliableDictionaryNames.GidToPointItemMap}' ReliableDictionaryAccess initialized.";
                    Logger.LogDebug(debugMessage);
                }
                else if (reliableStateName == ReliableDictionaryNames.AddressToGidMap)
                {
                    //_ = AddressToGidMap;
                    addressToGidMap = await ReliableDictionaryAccess <short, Dictionary <ushort, long> > .Create(stateManager, ReliableDictionaryNames.AddressToGidMap);

                    isAddressToGidMapInitialized = true;

                    string debugMessage = $"{baseLogString} OnStateManagerChangedHandler => '{ReliableDictionaryNames.AddressToGidMap}' ReliableDictionaryAccess initialized.";
                    Logger.LogDebug(debugMessage);
                }
                else if (reliableStateName == ReliableDictionaryNames.CommandDescriptionCache)
                {
                    //_ = CommandDescriptionCache;
                    commandDescriptionCache = await ReliableDictionaryAccess <long, CommandDescription> .Create(stateManager, ReliableDictionaryNames.CommandDescriptionCache);

                    isCommandDescriptionCacheInitialized = true;

                    string debugMessage = $"{baseLogString} OnStateManagerChangedHandler => '{ReliableDictionaryNames.CommandDescriptionCache}' ReliableDictionaryAccess initialized.";
                    Logger.LogDebug(debugMessage);
                }
                else if (reliableStateName == ReliableDictionaryNames.InfoCache)
                {
                    //_ = InfoCache;
                    infoCache = await ReliableDictionaryAccess <string, bool> .Create(stateManager, ReliableDictionaryNames.InfoCache);

                    isInfoCacheInitialized = true;

                    string debugMessage = $"{baseLogString} OnStateManagerChangedHandler => '{ReliableDictionaryNames.InfoCache}' ReliableDictionaryAccess initialized.";
                    Logger.LogDebug(debugMessage);
                }
            }
        }
        private async Task InitializeReliableCollections(NotifyStateManagerChangedEventArgs e)
        {
            if (e.Action == NotifyStateManagerChangedAction.Add)
            {
                var    operation         = e as NotifyStateManagerSingleEntityChangedEventArgs;
                string reliableStateName = operation.ReliableState.Name.AbsolutePath;

                if (reliableStateName == ReliableDictionaryNames.CallsDictionary)
                {
                    calls = await ReliableDictionaryAccess <long, long> .Create(this.stateManager, ReliableDictionaryNames.CallsDictionary);

                    this.isCallsDictionaryInitialized = true;
                }
            }
        }
Exemple #23
0
        private async Task InitializeReliableCollections(NotifyStateManagerChangedEventArgs e)
        {
            if (e.Action == NotifyStateManagerChangedAction.Add)
            {
                var    operation         = e as NotifyStateManagerSingleEntityChangedEventArgs;
                string reliableStateName = operation.ReliableState.Name.AbsolutePath;

                if (reliableStateName == ReliableDictionaryNames.RegisteredSubscribersCache)
                {
                    //_ = SubscriberCache;
                    registeredSubscribersCache = await ReliableDictionaryAccess <short, HashSet <string> > .Create(stateManager, ReliableDictionaryNames.RegisteredSubscribersCache);

                    isSubscriberCacheInitialized = true;
                }
            }
        }
Exemple #24
0
        private async Task InitializeReliableCollections(NotifyStateManagerChangedEventArgs e)
        {
            if (e.Action == NotifyStateManagerChangedAction.Add)
            {
                var    operation         = e as NotifyStateManagerSingleEntityChangedEventArgs;
                string reliableStateName = operation.ReliableState.Name.AbsolutePath;

                if (reliableStateName == ReliableDictionaryNames.GidToPointItemMap)
                {
                    gidToPointItemMap = await ReliableDictionaryAccess <long, IScadaModelPointItem> .Create(stateManager, ReliableDictionaryNames.GidToPointItemMap);

                    this.isGidToPointItemMapInitialized = true;

                    string debugMessage = $"{baseLogString} OnStateManagerChangedHandler => '{ReliableDictionaryNames.GidToPointItemMap}' ReliableDictionaryAccess initialized.";
                    Logger.LogDebug(debugMessage);
                }
                else if (reliableStateName == ReliableDictionaryNames.MeasurementsCache)
                {
                    measurementsCache = await ReliableDictionaryAccess <long, ModbusData> .Create(stateManager, ReliableDictionaryNames.MeasurementsCache);

                    this.isMeasurementsCacheInitialized = true;

                    string debugMessage = $"{baseLogString} OnStateManagerChangedHandler => '{ReliableDictionaryNames.MeasurementsCache}' ReliableDictionaryAccess initialized.";
                    Logger.LogDebug(debugMessage);
                }
                else if (reliableStateName == ReliableDictionaryNames.CommandDescriptionCache)
                {
                    commandDescriptionCache = await ReliableDictionaryAccess <long, CommandDescription> .Create(stateManager, ReliableDictionaryNames.CommandDescriptionCache);

                    this.isCommandDescriptionCacheInitialized = true;

                    string debugMessage = $"{baseLogString} OnStateManagerChangedHandler => '{ReliableDictionaryNames.CommandDescriptionCache}' ReliableDictionaryAccess initialized.";
                    Logger.LogDebug(debugMessage);
                }
                else if (reliableStateName == ReliableDictionaryNames.InfoCache)
                {
                    infoCache = await ReliableDictionaryAccess <string, bool> .Create(stateManager, ReliableDictionaryNames.InfoCache);

                    isInfoCacheInitialized = true;

                    string debugMessage = $"{baseLogString} OnStateManagerChangedHandler => '{ReliableDictionaryNames.InfoCache}' ReliableDictionaryAccess initialized.";
                    Logger.LogDebug(debugMessage);
                }
            }
        }
        private async Task InitializeReliableCollections(NotifyStateManagerChangedEventArgs e)
        {
            if (e.Action == NotifyStateManagerChangedAction.Add)
            {
                var    operation         = e as NotifyStateManagerSingleEntityChangedEventArgs;
                string reliableStateName = operation.ReliableState.Name.AbsolutePath;

                if (reliableStateName == ReliableDictionaryNames.MonitoredHeadBreakerMeasurements)
                {
                    this.monitoredHeadBreakerMeasurements = await ReliableDictionaryAccess <long, DiscreteModbusData> .Create(stateManager, ReliableDictionaryNames.MonitoredHeadBreakerMeasurements);

                    this.isMonitoredHeadBreakerMeasurementsInitialized = true;

                    string debugMessage = $"{baseLogString} OnStateManagerChangedHandler => '{ReliableDictionaryNames.MonitoredHeadBreakerMeasurements}' ReliableDictionaryAccess initialized.";
                    Logger.LogDebug(debugMessage);
                }
                else if (reliableStateName == ReliableDictionaryNames.OutageTopologyModel)
                {
                    this.outageTopologyModel = await ReliableDictionaryAccess <string, OutageTopologyModel> .Create(stateManager, ReliableDictionaryNames.OutageTopologyModel);

                    this.isOutageTopologyModelInitialized = true;

                    string debugMessage = $"{baseLogString} OnStateManagerChangedHandler => '{ReliableDictionaryNames.OutageTopologyModel}' ReliableDictionaryAccess initialized.";
                    Logger.LogDebug(debugMessage);
                }
                else if (reliableStateName == ReliableDictionaryNames.CommandedElements)
                {
                    this.commandedElements = await ReliableDictionaryAccess <long, CommandedElement> .Create(stateManager, ReliableDictionaryNames.CommandedElements);

                    this.isCommandedElementsInitialized = true;

                    string debugMessage = $"{baseLogString} OnStateManagerChangedHandler => '{ReliableDictionaryNames.CommandedElements}' ReliableDictionaryAccess initialized.";
                    Logger.LogDebug(debugMessage);
                }
                else if (reliableStateName == ReliableQueueNames.PotentialOutages)
                {
                    this.potentialOutagesQueue = await ReliableQueueAccess <PotentialOutageCommand> .Create(stateManager, ReliableQueueNames.PotentialOutages);

                    this.isPotentialOutagesQueueInitialized = true;

                    string debugMessage = $"{baseLogString} OnStateManagerChangedHandler => '{ReliableQueueNames.PotentialOutages}' ReliableDictionaryAccess initialized.";
                    Logger.LogDebug(debugMessage);
                }
            }
        }
        private async void OnStateManagerChangedHandler(object sender, NotifyStateManagerChangedEventArgs e)
        {
            if (e.Action == NotifyStateManagerChangedAction.Add)
            {
                var    operation         = e as NotifyStateManagerSingleEntityChangedEventArgs;
                string reliableStateName = operation.ReliableState.Name.AbsolutePath;

                if (reliableStateName == ReliableDictionaryNames.HistoryModelChanges)
                {
                    HistoryModelChanges = await ReliableDictionaryAccess <byte, List <long> > .Create(stateManager, ReliableDictionaryNames.HistoryModelChanges);

                    this.isHistoryModelChangesInitialized = true;

                    string debugMessage = $"{baseLogString} OnStateManagerChangedHandler => '{ReliableDictionaryNames.HistoryModelChanges}' ReliableDictionaryAccess initialized.";
                    Logger.LogDebug(debugMessage);
                }
            }
        }
        private async Task InitializeReliableCollections(NotifyStateManagerChangedEventArgs e)
        {
            if (e.Action == NotifyStateManagerChangedAction.Add)
            {
                var    operation         = e as NotifyStateManagerSingleEntityChangedEventArgs;
                string reliableStateName = operation.ReliableState.Name.AbsolutePath;

                if (reliableStateName == ReliableDictionaryNames.OutageTopologyModel)
                {
                    this.outageTopologyModel = await ReliableDictionaryAccess <string, OutageTopologyModel> .Create(stateManager, ReliableDictionaryNames.OutageTopologyModel);

                    this.isOutageTopologyModelInitialized = true;

                    string debugMessage = $"{baseLogString} OnStateManagerChangedHandler => '{ReliableDictionaryNames.OutageTopologyModel}' ReliableDictionaryAccess initialized.";
                    Logger.LogDebug(debugMessage);
                }
            }
        }
Exemple #28
0
        private async void OnStateManagerChangedHandler(object sender, NotifyStateManagerChangedEventArgs e)
        {
            if (e.Action == NotifyStateManagerChangedAction.Add)
            {
                var    operation         = e as NotifyStateManagerSingleEntityChangedEventArgs;
                string reliableStateName = operation.ReliableState.Name.AbsolutePath;

                if (reliableStateName == ReliableDictionaryNames.RegisteredSubscribersCache)
                {
                    //_ = SubscriberCache;
                    registeredSubscribersCache = await ReliableDictionaryAccess <short, HashSet <string> > .Create(stateManager, ReliableDictionaryNames.RegisteredSubscribersCache);

                    isSubscriberCacheInitialized = true;

                    string debugMessage = $"{baseLogString} OnStateManagerChangedHandler => '{ReliableDictionaryNames.RegisteredSubscribersCache}' ReliableDictionaryAccess initialized.";
                    Logger.LogDebug(debugMessage);
                }
            }
        }
Exemple #29
0
        private async Task InitializeReliableCollections(NotifyStateManagerChangedEventArgs e)
        {
            if (e.Action == NotifyStateManagerChangedAction.Add)
            {
                var    operation         = e as NotifyStateManagerSingleEntityChangedEventArgs;
                string reliableStateName = operation.ReliableState.Name.AbsolutePath;
                if (reliableStateName == ReliableDictionaryNames.OpenedSwitches)
                {
                    openedSwitches = await ReliableDictionaryAccess <long, long> .Create(this.stateManager, ReliableDictionaryNames.OpenedSwitches);

                    this.isOpenedSwitchesInitialized = true;
                }
                else if (reliableStateName == ReliableDictionaryNames.UnenergizedConsumers)
                {
                    unenergizedConsumers = await ReliableDictionaryAccess <long, long> .Create(this.stateManager, ReliableDictionaryNames.UnenergizedConsumers);

                    this.isUnenergizedConsumersInitialized = true;
                }
            }
        }
Exemple #30
0
        private void ProcessStateManagerSingleEntityNotification(NotifyStateManagerChangedEventArgs e)
        {
            var operation = e as NotifyStateManagerSingleEntityChangedEventArgs;

            // Register OnDictionaryChangedHandler when dictionary is added so that no notification is missed.
            if (operation.Action == NotifyStateManagerChangedAction.Add &&
                operation.ReliableState is IReliableDictionary <long, WinFabPersistence.PersistedData> )
            {
                var dictionary = (IReliableDictionary <long, WinFabPersistence.PersistedData>)operation.ReliableState;
                this.SetFlagsForReliableDictionary(dictionary);

                // Ensure that the handler is registered only once by doing -= followed by +=
                // It is safe to do -= even if no handler has been added.
                dictionary.DictionaryChanged -= this.OnDictionaryChangedHandler;
                dictionary.DictionaryChanged += this.OnDictionaryChangedHandler;

                dictionary.RebuildNotificationAsyncCallback = this.OnDictionaryRebuildNotificationHandlerAsync;
                ServiceFabricPersistenceEventSource.Log.ProcessStateManagerSingleEntityNotification_ReliableDictionaryAdded(dictionary.Name.ToString());
            }
        }