public NodeSettings GetNodeSettings(string node, Category c) { var s = PerNodeSettings?.FirstOrDefault(n => n.PatternRegex.IsMatch(node)); // Grab setting from node, then category, then global Func <Func <INodeSettings, decimal?>, decimal?> getVal = f => (s != null ? f(s) : null) ?? f(c) ?? f(this); return(new NodeSettings { CPUWarningPercent = getVal(i => i.CPUWarningPercent), CPUCriticalPercent = getVal(i => i.CPUCriticalPercent), MemoryWarningPercent = getVal(i => i.MemoryWarningPercent), MemoryCriticalPercent = getVal(i => i.MemoryCriticalPercent), DiskWarningPercent = getVal(i => i.DiskWarningPercent), DiskCriticalPercent = getVal(i => i.DiskCriticalPercent), PrimaryInterfacePatternRegex = s?.PrimaryInterfacePatternRegex ?? c.PrimaryInterfacePatternRegex }); }
public NodeSettings GetNodeSettings(string node) => PerNodeSettings?.FirstOrDefault(n => n.PatternRegex.IsMatch(node)) ?? NodeSettings.Empty;
public void AfterLoad() { Categories.AddHandlers(this, CategoryAdded, CategoriesChanged, CategoryRemoved); Providers.AddHandlers(this, ProviderAdded, ProvidersChanged, ProviderRemoved); PerNodeSettings.AddHandlers(this, PerNodeSettingAdded, PerNodeSettingsChanged, PerNodeSettingRemoved); }