Beispiel #1
0
        protected override void DoStart()
        {
            log(MessageType.Info, "Entering DoStart()", null);

            try
            {
                //pre-flight checks
                if (m_Provider == null)
                {
                    throw new NFXException(StringConsts.SERVICE_INVALID_STATE + "InstrumentationService.DoStart(Provider=null)");
                }


                m_BufferOldestDatumUTC = null;

                m_TypeBucketed = new TypeBucketedData();

                m_Provider.Start();

                m_ResultBufferIndex = 0;
                if (m_ResultBufferSize > 0)
                {
                    m_ResultBuffer = new Datum[m_ResultBufferSize];
                }


                m_Thread              = new Thread(threadSpin);
                m_Thread.Name         = THREAD_NAME;
                m_Thread.IsBackground = false;

                m_Thread.Start();
            }
            catch (Exception error)
            {
                AbortStart();

                if (m_Thread != null)
                {
                    try { m_Thread.Join(); } catch {}
                    m_Thread = null;
                }

                m_ResultBuffer = null;

                log(MessageType.CatastrophicError, "DoStart() exception: " + error.Message, null);
                throw error;
            }

            log(MessageType.Info, "Exiting DoStart()", null);
        }
Beispiel #2
0
        protected override void DoWaitForCompleteStop()
        {
            log(MessageType.Info, "Entering DoWaitForCompleteStop()", null);

            try
            {
                base.DoWaitForCompleteStop();

                m_Thread.Join();
                m_Thread = null;

                m_Provider.WaitForCompleteStop();

                m_TypeBucketed = null;
                m_ResultBuffer = null;
            }
            catch (Exception error)
            {
                log(MessageType.CatastrophicError, "DoWaitForCompleteStop() exception: " + error.Message, null);
                throw error;
            }

            log(MessageType.Info, "Exiting DoWaitForCompleteStop()", null);
        }
Beispiel #3
0
        protected override void DoWaitForCompleteStop()
        {
            WriteLog(MessageType.Info, nameof(DoWaitForCompleteStop), "Entering");

            try
            {
                base.DoWaitForCompleteStop();

                m_Thread.Join();
                m_Thread = null;

                m_Provider.WaitForCompleteStop();

                m_TypeBucketed = null;
                m_ResultBuffer = null;
            }
            catch (Exception error)
            {
                WriteLog(MessageType.CatastrophicError, nameof(DoWaitForCompleteStop), "Leaked exception: " + error.Message);
                throw error;
            }

            WriteLog(MessageType.Info, nameof(DoWaitForCompleteStop), "Exiting");
        }