Esempio n. 1
0
        /// <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();
        }