예제 #1
0
            public IYodiiEngineResult Remove(IConfigurationLayer layer)
            {
                if (layer == null)
                {
                    throw new ArgumentNullException("layer");
                }
                if (layer.ConfigurationManager != _parent)
                {
                    return(_parent.Engine.SuccessResult);
                }
                // When called by a hacker.
                ConfigurationLayer l = layer as ConfigurationLayer;

                if (l == null)
                {
                    throw new ArgumentException("Invalid layer.", "layer");
                }

                Debug.Assert(_layers.Contains(layer), "Since layer.ConfigurationManager == _parent, then it necessarily belongs to us.");

                IYodiiEngineResult result = _parent.OnConfigurationLayerRemoving(l);

                if (result.Success)
                {
                    _layers.Remove(l);
                    l.SetConfigurationManager(null);
                    _parent.OnConfigurationChanged();
                }
                return(result);
            }
예제 #2
0
            public IConfigurationLayer Create(string layerName = null)
            {
                var layer = new ConfigurationLayer(_parent, layerName);

                _layers.Add(layer);
                return(layer);
            }
예제 #3
0
 internal ConfigurationItemCollection(ConfigurationLayer parent)
 {
     _items = new CKObservableSortedArrayKeyList <ConfigurationItem, string>(e => e.ServiceOrPluginFullName, (x, y) => StringComparer.Ordinal.Compare(x, y));
     _layer = parent;
     _items.PropertyChanged   += RetrievePropertyEvent;
     _items.CollectionChanged += RetrieveCollectionEvent;
 }
예제 #4
0
        internal IYodiiEngineResult OnConfigurationLayerRemoving(ConfigurationLayer layer)
        {
            Dictionary <string, FinalConfigurationItem> final = new Dictionary <string, FinalConfigurationItem>();

            ConfigurationFailureResult internalResult = FillFromConfiguration(null, final, c => c.Layer != layer);

            Debug.Assert(internalResult.Success, "Removing a configuration layer can not lead to an impossibility.");

            return(OnConfigurationChanging(final, finalConf => new ConfigurationChangingEventArgs(finalConf, FinalConfigurationChange.LayerRemoved, layer)));
        }
예제 #5
0
        internal ConfigurationItem(ConfigurationLayer configurationLayer, string serviceOrPluginFullName, ConfigurationStatus initialStatus, StartDependencyImpact initialImpact, string initialStatusReason = "")
        {
            Debug.Assert(!String.IsNullOrEmpty(serviceOrPluginFullName));
            Debug.Assert(configurationLayer != null);
            Debug.Assert(initialStatusReason != null);

            _owner = configurationLayer;
            _serviceOrPluginFullName = serviceOrPluginFullName;
            _status       = initialStatus;
            _impact       = initialImpact;
            _statusReason = initialStatusReason;
        }