public MockReliableStateManager()
        {
            // Initialze _store to a TransactedConcurrentDictionary that fires the StateManagerChanged event in the OnDictionaryChanged callback.
            _store = new TransactedConcurrentDictionary <Uri, IReliableState>(
                new Uri("fabric://state", UriKind.Absolute),
                (c) =>
            {
                if (StateManagerChanged != null)
                {
                    NotifyStateManagerSingleEntityChangedEventArgs changeEvent;
                    switch (c.ChangeType)
                    {
                    case ChangeType.Added:
                        changeEvent = new NotifyStateManagerSingleEntityChangedEventArgs(c.Transaction, c.Added, NotifyStateManagerChangedAction.Add);
                        break;

                    case ChangeType.Removed:
                        changeEvent = new NotifyStateManagerSingleEntityChangedEventArgs(c.Transaction, c.Removed, NotifyStateManagerChangedAction.Remove);
                        break;

                    default:
                        return(false);
                    }

                    StateManagerChanged.Invoke(this, changeEvent);
                }

                return(true);
            }
                );
        }
 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;
         }
     }
 }
Example #3
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;
                }
            }
        }
        private void OnStatesOnDictionaryChanged(object sender, NotifyDictionaryChangedEventArgs <string, IReliableState> dictionaryChangedEventArgs)
        {
            NotifyStateManagerSingleEntityChangedEventArgs args = null;

            switch (dictionaryChangedEventArgs)
            {
            case NotifyDictionaryItemAddedEventArgs <string, IReliableState> added:
                args = new NotifyStateManagerSingleEntityChangedEventArgs(added.Transaction, added.Value, NotifyStateManagerChangedAction.Add);
                break;

            case NotifyDictionaryItemRemovedEventArgs <string, IReliableState> removed:
                args = new NotifyStateManagerSingleEntityChangedEventArgs(removed.Transaction, null, NotifyStateManagerChangedAction.Remove);
                break;
            }

            if (args != null)
            {
                OnStateManagerChanged(args);
            }
        }
        public MockReliableStateManager(TransactedConcurrentDictionary <Uri, IReliableState> store = null)
        {
            _store = store ?? new TransactedConcurrentDictionary <Uri, IReliableState>(new Uri("fabric://state", UriKind.Absolute));
            _store.InternalDictionaryChanged +=
                (sender, args) =>
            {
                if (StateManagerChanged != null)
                {
                    NotifyStateManagerSingleEntityChangedEventArgs changeEvent = null;
                    switch (args.ChangeType)
                    {
                    case ChangeType.Added:
                        changeEvent = new NotifyStateManagerSingleEntityChangedEventArgs(args.Transaction, args.Added, NotifyStateManagerChangedAction.Add);
                        break;

                    case ChangeType.Removed:
                        changeEvent = new NotifyStateManagerSingleEntityChangedEventArgs(args.Transaction, args.Removed, NotifyStateManagerChangedAction.Remove);
                        break;
                    }

                    StateManagerChanged.Invoke(this, changeEvent);
                }
            };
        }