public IGRequestProcessing(IGRequest request, IGServer server) { m_server = server; m_request = request; m_xmlNodeRequest = m_request.GetXmlNode(); XmlNode xmlNodeTypeId = request.GetAttribute(IGRequest.IGREQUEST_NODETYPE); if (xmlNodeTypeId != null) m_nTypeId = Convert.ToInt32(xmlNodeTypeId.Value); XmlNode xmlNodeReqId = request.GetAttribute(IGRequest.IGREQUEST_NODEID); if (xmlNodeReqId != null) m_nReqId = Convert.ToInt32(xmlNodeReqId.Value); XmlNode xmlNodeGuid = request.GetAttribute(IGRequest.IGREQUEST_GUID); if (xmlNodeGuid != null) m_sGuid = xmlNodeGuid.Value; XmlNode xmlNodeUser = request.GetParameter(IGRequest.IGREQUEST_USERLOGIN); if (xmlNodeUser != null) m_sUser = xmlNodeUser.Value; XmlNode xmlNodeFrameId = request.GetParameter(IGRequest.IGREQUEST_FRAMEID); if (xmlNodeFrameId != null) m_sFrameId = xmlNodeFrameId.Value; m_nProgressTime = DateTime.UtcNow.Ticks; m_nProgress = 0; m_eStatus = IGSMStatusUser.IGState.IGSMSTATUS_WORKING; m_timer = new System.Timers.Timer(); m_timer.Elapsed += new ElapsedEventHandler(OnSurveyProcessingEvent); m_timer.Interval = HC.IGREQPROC_PROGRESS_CHECKTIME; m_timer.Start(); }
public override IGSMStatus.IGState GetState() { lock (m_lockObject) { if (((DateTime.UtcNow.Ticks - m_nHearthbeatTime) / 10000) > HC.HEARTHBEAT_REMOTE_SERVERTIMEOUT_NOTRESPONDING) { if (m_connection != null) { if (m_connection.Ping()) { ResetState(); return m_eState; } } m_eState = IGSMStatus.IGState.IGSMSTATUS_NOTRESPONDING; } else { m_eState = IGSMStatus.IGState.IGSMSTATUS_READY; } return m_eState; } }
public void SetStateDown() { lock (m_lockObject) { m_nHearthbeatTime = -1; m_eState = IGSMStatus.IGState.IGSMSTATUS_NOTRESPONDING; } }
public override void ResetState() { lock (m_lockObject) { m_nHearthbeatTime = DateTime.UtcNow.Ticks; m_eState = IGSMStatus.IGState.IGSMSTATUS_READY; } }
public void OnSurveyProcessingEvent(object source, ElapsedEventArgs e) { lock (this) { if (((DateTime.UtcNow.Ticks - m_nProgressTime) / 10000) > HC.PROGRESS_TIMEOUT_LOCAL) { if (m_eStatus != IGSMStatusUser.IGState.IGSMSTATUS_NOTRESPONDING) { IGServerManager serverMgr = IGServerManager.Instance; if (m_nNbRetry++ >= 1) { //m_request.SetParameter(IGRequest.IGREQUEST_RETRY, m_nNbRetry.ToString()); //m_nProgressTime = DateTime.UtcNow.Ticks; m_eStatus = IGSMStatusUser.IGState.IGSMSTATUS_NOTRESPONDING; serverMgr.AppendError("TIMEOUT, request not responding: " + m_request.ToString()); IGRequestProcessing.Remove(this); } } } else { m_eStatus = IGSMStatusUser.IGState.IGSMSTATUS_WORKING; } } }