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); }
public IConfigurationLayer Create(string layerName = null) { var layer = new ConfigurationLayer(_parent, layerName); _layers.Add(layer); return(layer); }
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; }
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))); }
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; }