/**********************************************************************************/ 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(); }