/// <summary> /// Initializes <see cref="TimestampTest"/>. /// </summary> public override void Initialize() { base.Initialize(); string errorMessage = "{0} is missing from Settings - Example: concentratorName=TESTSTREAM"; Dictionary <string, string> settings = Settings; string setting; // Load optional parameters if (settings.TryGetValue("timeToPurge", out setting)) { m_timeToPurge = Ticks.FromSeconds(double.Parse(setting)); } if (settings.TryGetValue("warnInterval", out setting)) { m_warnInterval = Ticks.FromSeconds(double.Parse(setting)); } // Load required parameters string concentratorName; if (!settings.TryGetValue("concentratorName", out concentratorName)) { throw new ArgumentException(string.Format(errorMessage, "concentratorName")); } m_discardingAdapter = null; // Find the adapter whose name matches the specified concentratorName foreach (IAdapter adapter in Parent) { IActionAdapter concentrator = adapter as IActionAdapter; if (concentrator != null && string.Compare(adapter.Name, concentratorName, true) == 0) { m_discardingAdapter = concentrator; break; } } if (m_discardingAdapter == null) { throw new ArgumentException(string.Format("Concentrator {0} not found.", concentratorName)); } // Wait for associated adapter to initialize int timeout = m_discardingAdapter.InitializationTimeout; m_discardingAdapter.WaitForInitialize(timeout); if (!m_discardingAdapter.Initialized) { throw new TimeoutException(string.Format("Timeout waiting for concentrator {0} to initialize.", concentratorName)); } // Attach to adapter's discarding measurements and disposed events m_discardingAdapter.DiscardingMeasurements += m_discardingAdapter_DiscardingMeasurements; m_discardingAdapter.Disposed += m_discardingAdapter_Disposed; m_purgeTimer.Interval = m_timeToPurge.ToMilliseconds(); m_purgeTimer.Elapsed += m_purgeTimer_Elapsed; m_warningTimer.Interval = m_warnInterval.ToMilliseconds(); m_warningTimer.Elapsed += m_warningTimer_Elapsed; m_timestampService = new TimestampService(this); m_timestampService.ServiceProcessException += m_timestampService_ServiceProcessException; m_timestampService.SettingsCategory = base.Name + m_timestampService.SettingsCategory; m_timestampService.Initialize(); }