internal void OnStateManagerChanged()

in src/BackupExplorer/Parser/TransactionChangeManager.cs [63:129]


        internal void OnStateManagerChanged(object sender, NotifyStateManagerChangedEventArgs e)
        {
            log.Info($" StateManagerChanged with event Action:- {e.Action}");
            var rebuildEvent = e as NotifyStateManagerRebuildEventArgs;
            if (rebuildEvent != null)
            {
                var reliableStates = rebuildEvent.ReliableStates.ToEnumerable();
                foreach (var reliableState in reliableStates)
                {
                    var reliableStateType1 = reliableState.GetType();
                    switch (ReliableStateKindUtils.KindOfReliableState(reliableState))
                    {
                        case ReliableStateKind.ReliableDictionary:
                            {
                                var keyType = reliableStateType1.GetGenericArguments()[0];
                                var valueType = reliableStateType1.GetGenericArguments()[1];
                                // use reflection to call my own method because key/value types are known at runtime.
                                this.GetType().GetMethod("AddDictionaryChangedHandler", BindingFlags.Instance | BindingFlags.NonPublic)
                                    .MakeGenericMethod(keyType, valueType)
                                    .Invoke(this, new object[] { reliableState });
                                break;
                            }

                        case ReliableStateKind.ReliableQueue:
                        case ReliableStateKind.ReliableConcurrentQueue:
                        default:
                            break;
                    }

                }
                this.reliabilitySimulator.GrantReadAccess();
                return;
            }

            var addoperation = e as NotifyStateManagerSingleEntityChangedEventArgs;
            var reliableStateType = addoperation.ReliableState.GetType();
            switch (ReliableStateKindUtils.KindOfReliableState(addoperation.ReliableState))
            {
                case ReliableStateKind.ReliableDictionary:
                    {
                        var keyType = reliableStateType.GetGenericArguments()[0];
                        var valueType = reliableStateType.GetGenericArguments()[1];

                        // use reflection to call my own method because key/value types are known at runtime.
                        this.GetType().GetMethod("AddDictionaryChangedHandler", BindingFlags.Instance | BindingFlags.NonPublic)
                            .MakeGenericMethod(keyType, valueType)
                            .Invoke(this, new object[] { addoperation.ReliableState });
                        break;
                    }

                case ReliableStateKind.ReliableQueue:
                    {
                        log.Info("Queue  is present in the Backup. Backup Viewer cannot handle these events");
                        break;
                    }
                case ReliableStateKind.ReliableConcurrentQueue:
                    {
                        log.Info("Concurrent Queue is present in the backup. Backup Viewer cannot handle these events.");
                        break;
                    }
                default:
                    break;
            }



        }