private void SendChangeEvents(IEnumerable <KindAndKey> affectedItems)
        {
            var copyOfHandlers = FlagChanged;

            if (copyOfHandlers == null)
            {
                return;
            }
            var sender = this;

            foreach (var item in affectedItems)
            {
                if (item.Kind == DataModel.Features)
                {
                    var eventArgs = new FlagChangeEvent(item.Key);
                    _taskExecutor.ScheduleEvent(eventArgs, copyOfHandlers);
                }
            }
        }
Пример #2
0
            internal void OnFlagChanged(object sender, FlagChangeEvent eventArgs)
            {
                if (eventArgs.Key != _flagKey)
                {
                    return;
                }
                var     newValue = _evaluateFn(_flagKey, _user);
                LdValue oldValue = LdValue.Null;
                bool    changed  = false;

                lock (_valueLock)
                {
                    if (!_value.Equals(newValue))
                    {
                        changed  = true;
                        oldValue = _value;
                        _value   = newValue;
                    }
                }
                if (changed)
                {
                    _handler(sender, new FlagValueChangeEvent(_flagKey, oldValue, newValue));
                }
            }