/**********************************************************************************/


        private void execute()
        {
            OadrPoll oadrPoll = null;

            while (m_running)
            {
                try
                {
                    updateStatus(STATUS_POLLING);

                    if (handleRegistration())
                    {
                        oadrPoll = doPoll();
                        Logger.logMessage(oadrPoll.ToString() + "\n", "VenWrapper.log");
                    }
                }
                catch (Exception ex)
                {
                    m_callbacks.processException(ex);
                }

                try
                {
                    handleEventStatusChanges();
                }
                catch (Exception ex)
                {
                    m_callbacks.processException(ex);
                }

                try
                {
                    // only sleep if the last oadrpoll was an OadrResponse or an error occured
                    if (oadrPoll == null || oadrPoll.response == null || oadrPoll.responseTypeIs(typeof(oadrResponseType)) || oadrPoll.eiResponseCode != 200)
                    {
                        updateStatus(STATUS_IDLE);

                        Thread.Sleep(m_timeout);
                    }
                    else
                    {
                        Thread.Sleep(1000);
                    }
                }
                catch (ThreadInterruptedException)
                {
                }
                catch (Exception ex)
                {
                    m_callbacks.processException(ex);
                }
            }
        }
        /**********************************************************/

        /// <summary>
        /// force the VEN to reregister
        /// </summary>
        public void register()
        {
            Thread thread = new Thread(delegate()
            {
                try
                {
                    lock (m_ven)
                    {
                        if (!handleRegistration(true))
                        {
                            return;
                        }

                        OadrPoll poll = doPoll();
                        Logger.logMessage(poll.ToString() + "\n", "VenWrapper.log");

                        // continually process messages in the remote queue until the queue
                        // is empty
                        while (!poll.responseTypeIs(typeof(oadrResponseType)))
                        {
                            poll = doPoll();
                            Logger.logMessage(poll.ToString() + "\n", "VenWrapper.log");
                        }
                    }
                }
                catch (Exception ex)
                {
                    m_callbacks.processException(ex);
                }
                finally
                {
                    updateStatus(STATUS_IDLE);
                }
            });

            thread.Start();
        }