protected virtual void ReloadConfigs(object state) { try { if (Client.CanSendData == false) { return; } var period = Client.Config.Logs.WebLog.ReloadConfigsPeriod; if (period == TimeSpan.Zero) { return; } var now = DateTime.Now; if (LastReloadConfigsDate + period > now) { return; } LastReloadConfigsDate = now; lock (ReloadConfigsSynchRoot) { if (ReloadControls.Count == 0) { return; } var maxUpdateDate = ReloadControls.Max(x => x.WebLogConfig.LastUpdateDate); var componentIds = ReloadControls.Select(x => x.Info.Id).ToList(); var newConfigs = Client.ApiService.GetChangedWebLogConfigs(maxUpdateDate, componentIds); if (newConfigs.Success) { foreach (var config in newConfigs.Data) { // может быть 2 контрола с одинаковым ИД, из-за того, // что один получили (GetOrCreate) от родителя, а второго из папки родителя var controls = ReloadControls.Where(x => x.Info.Id == config.ComponentId); foreach (var control in controls) { var oldConfig = control.WebLogConfig; oldConfig.Enabled = config.Enabled; oldConfig.IsTraceEnabled = config.IsTraceEnabled; oldConfig.IsDebugEnabled = config.IsDebugEnabled; oldConfig.IsInfoEnabled = config.IsInfoEnabled; oldConfig.IsWarningEnabled = config.IsWarningEnabled; oldConfig.IsErrorEnabled = config.IsErrorEnabled; oldConfig.IsFatalEnabled = config.IsFatalEnabled; oldConfig.LastUpdateDate = config.LastUpdateDate; } } } } } catch (Exception exception) { Client.InternalLog.Error("Ошибка перезагрузки настроек веб-логов", exception); } }
public void EndReloadConfig(IComponentControl componentControl) { lock (ReloadConfigsSynchRoot) { ReloadControls.Remove(componentControl); if (componentControl.IsFake() == false) { ReloadControls.RemoveAll(x => x.IsFake() == false && x.Info.Id == componentControl.Info.Id); } } }
public void BeginReloadConfig(IComponentControl componentControl) { lock (ReloadConfigsSynchRoot) { var data = ReloadControls.FirstOrDefault(x => x == componentControl); if (data == null) { ReloadControls.Add(componentControl); } } }