protected void DoPoll(IPolledConfigurationSource source, IConfiguration config) { m_Log.Debug("Polling started"); PollResult result; try { result = source.Poll(false, GetNextCheckPoint(m_CheckPoint)); m_CheckPoint = result.CheckPoint; RaisePollingCompletedEvent(new PollingEventArgs(PollingEventArgs.EventType.Success, result, null)); } catch (Exception e) { m_Log.Error("Error getting result from polling source", e); RaisePollingCompletedEvent(new PollingEventArgs(PollingEventArgs.EventType.Failure, null, e)); return; } try { PopulateProperties(result, config); } catch (Exception e) { m_Log.Error("Error occured applying properties", e); } }
/// <summary> /// Do an initial poll from the source and apply the result to the configuration. /// </summary> /// <param name="source">source of the configuration</param> /// <param name="config">Configuration to apply the polling result</param> protected void InitialLoad(IPolledConfigurationSource source, IConfiguration config) { PollResult result; try { result = source.Poll(true, null); m_CheckPoint = result.CheckPoint; RaisePollingCompletedEvent(new PollingEventArgs(PollingEventArgs.EventType.Success, result, null)); } catch (Exception e) { RaisePollingCompletedEvent(new PollingEventArgs(PollingEventArgs.EventType.Failure, null, e)); m_Log.Error("Unable to load properties source from " + source, e); return; } try { PopulateProperties(result, config); } catch (Exception e) { m_Log.Error("Unable to applying properties.", e); } }
/// <summary> /// Start polling the configuration source with the specified scheduler. /// </summary> /// <param name="source">PolledConfigurationSource to poll</param> /// <param name="scheduler"> /// AbstractPollingScheduler whose <see cref="AbstractPollingScheduler.SchedulePollingAction"/> will be used to determine the polling schedule /// </param> public void StartPolling(IPolledConfigurationSource source, AbstractPollingScheduler scheduler) { lock (m_ObjectLock) { m_Scheduler = scheduler; m_Source = source; Init(source, scheduler); scheduler.StartPolling(source, this); } }
/// <summary> /// Start polling the configuration source with the specified scheduler. /// </summary> /// <param name="source">PolledConfigurationSource to poll</param> /// <param name="scheduler"> /// AbstractPollingScheduler whose <see cref="AbstractPollingScheduler.SchedulePollingAction"/> will be used to determine the polling schedule /// </param> public void StartPolling(IPolledConfigurationSource source, AbstractPollingScheduler scheduler) { lock (m_ObjectLock) { m_Scheduler = scheduler; m_Source = source; Init(source, scheduler); scheduler.StartPolling(source, this); } }
/// <summary> /// Schedule the polling action of the configuration source /// </summary> protected override void SchedulePollingAction(IPolledConfigurationSource source, IConfiguration config) { lock (m_ObjectLock) { if (m_Timer != null) { throw new InvalidOperationException("The polling thread is working now."); } m_Timer = new Timer(s => DoPoll(source, config), null, m_InitialDelayMillis, m_DelayMillis); } }
/// <summary> /// Schedule the polling action of the configuration source /// </summary> protected override void SchedulePollingAction(IPolledConfigurationSource source, IConfiguration config) { lock (m_ObjectLock) { if (m_Timer != null) { throw new InvalidOperationException("The polling thread is working now."); } m_Timer = new Timer(s => DoPoll(source, config), null, m_InitialDelayMillis, m_DelayMillis); } }
/// <summary> /// Do an initial poll from the source and apply the result to the configuration. /// </summary> /// <param name="source">source of the configuration</param> /// <param name="config">Configuration to apply the polling result</param> protected void InitialLoad(IPolledConfigurationSource source, IConfiguration config) { PollResult result; try { result = source.Poll(true, null); m_CheckPoint = result.CheckPoint; RaisePollingCompletedEvent(new PollingEventArgs(PollingEventArgs.EventType.Success, result, null)); } catch (Exception e) { RaisePollingCompletedEvent(new PollingEventArgs(PollingEventArgs.EventType.Failure, null, e)); m_Log.Error("Unable to load properties source from " + source, e); return; } try { PopulateProperties(result, config); } catch (Exception e) { m_Log.Error("Unable to applying properties.", e); } }
/// <summary> /// Create an instance and start polling the configuration source /// </summary> /// <param name="config">Configuration to delegate to</param> /// <param name="source"><see cref="IPolledConfigurationSource"/> to poll get new/changed properties</param> /// <param name="scheduler"><see cref="AbstractPollingScheduler"/> to provide the polling schedule</param> public ConfigurationWithPollingSource(IConfiguration config, IPolledConfigurationSource source, AbstractPollingScheduler scheduler) { m_Config = config; m_Scheduler = scheduler; scheduler.StartPolling(source, this); }
/// <summary> /// Schedule the polling action of the configuration source /// </summary> protected abstract void SchedulePollingAction(IPolledConfigurationSource source, IConfiguration config);
/// <summary> /// Initiate the first poll of the configuration source and schedule the action. /// </summary> /// <param name="source">Configuration source being polled</param> /// <param name="config">Configuration where the properties will be updated</param> public void StartPolling(IPolledConfigurationSource source, IConfiguration config) { InitialLoad(source, config); SchedulePollingAction(source, config); }
protected void DoPoll(IPolledConfigurationSource source, IConfiguration config) { m_Log.Debug("Polling started"); PollResult result; try { result = source.Poll(false, GetNextCheckPoint(m_CheckPoint)); m_CheckPoint = result.CheckPoint; RaisePollingCompletedEvent(new PollingEventArgs(PollingEventArgs.EventType.Success, result, null)); } catch (Exception e) { m_Log.Error("Error getting result from polling source", e); RaisePollingCompletedEvent(new PollingEventArgs(PollingEventArgs.EventType.Failure, null, e)); return; } try { PopulateProperties(result, config); } catch (Exception e) { m_Log.Error("Error occured applying properties", e); } }
/// <summary> /// Create an instance and start polling the configuration source /// </summary> /// <param name="config">Configuration to delegate to</param> /// <param name="source"><see cref="IPolledConfigurationSource"/> to poll get new/changed properties</param> /// <param name="scheduler"><see cref="AbstractPollingScheduler"/> to provide the polling schedule</param> public ConfigurationWithPollingSource(IConfiguration config, IPolledConfigurationSource source, AbstractPollingScheduler scheduler) { m_Config = config; m_Scheduler = scheduler; scheduler.StartPolling(source, this); }
/// <summary> /// Initialize the configuration. This method is called in <see cref="DynamicConfiguration"/> and <see cref="StartPolling"/> /// before the initial polling. The default implementation does nothing. /// </summary> /// <param name="source"></param> /// <param name="scheduler"></param> protected virtual void Init(IPolledConfigurationSource source, AbstractPollingScheduler scheduler) { }
/// <summary> /// Initiate the first poll of the configuration source and schedule the action. /// </summary> /// <param name="source">Configuration source being polled</param> /// <param name="config">Configuration where the properties will be updated</param> public void StartPolling(IPolledConfigurationSource source, IConfiguration config) { InitialLoad(source, config); SchedulePollingAction(source,config); }
/// <summary> /// Create an instance and start polling the configuration source. /// </summary> /// <param name="source">PolledConfigurationSource to poll</param> /// <param name="scheduler"> /// AbstractPollingScheduler whose <see cref="AbstractPollingScheduler.SchedulePollingAction"/> will be used to determine the polling schedule /// </param> public DynamicConfiguration(IPolledConfigurationSource source, AbstractPollingScheduler scheduler) : this() { StartPolling(source, scheduler); }
/// <summary> /// Initialize the configuration. This method is called in <see cref="DynamicConfiguration"/> and <see cref="StartPolling"/> /// before the initial polling. The default implementation does nothing. /// </summary> /// <param name="source"></param> /// <param name="scheduler"></param> protected virtual void Init(IPolledConfigurationSource source, AbstractPollingScheduler scheduler) { }
/// <summary> /// Schedule the polling action of the configuration source /// </summary> protected abstract void SchedulePollingAction(IPolledConfigurationSource source, IConfiguration config);
/// <summary> /// Create an instance and start polling the configuration source. /// </summary> /// <param name="source">PolledConfigurationSource to poll</param> /// <param name="scheduler"> /// AbstractPollingScheduler whose <see cref="AbstractPollingScheduler.SchedulePollingAction"/> will be used to determine the polling schedule /// </param> public DynamicConfiguration(IPolledConfigurationSource source, AbstractPollingScheduler scheduler) : this() { StartPolling(source, scheduler); }