private bool isAbort() { //check for abort message MergerMessage abortMessage = m_abortQueue.GetMessageByType(typeof(AbortMergeMessage)); if (abortMessage != null) { waitForThreads(); m_log.Info("RenderingAbortMessage. ID: " + m_abortQueue.getSuffix().ToString()); AbortMergeMessage abortMes = abortMessage as AbortMergeMessage; m_engine.Cleanup(); if (m_dispatcherQueues.ContainsKey(abortMes.SceneID)) { m_dispatcherQueues[abortMes.SceneID].Delete(); m_dispatcherQueues.Remove(abortMes.SceneID); } clearSceneContainer(abortMes.SceneName); m_isMerging = false; m_instanceQueue.Clear(); m_instanceQueue.Delete(); m_abortQueue.Delete(); m_log.Info("/RenderingAbortMessage"); return(true); } return(false); }
//check if abort message was send by client private bool isDisconnected(NetMessageHandler handler, string sessionId) { sendClientMessage(handler, StatusMessage.StatusEnum.OK); StatusMessage statusMess = handler.GetSynchMessage() as StatusMessage; if (((statusMess != null) && (statusMess.Status == StatusMessage.StatusEnum.Aborted)) || (!handler.Connected())) { try { m_log.Info("Got abort message or connection was disconnected. ID: " + m_threadsID[sessionId].ToString()); //sending abort messeges to workers for (int i = 0; i < m_renderAbortHandlers[m_threadsID[sessionId]].Count; ++i) { try { m_renderAbortHandlers[m_threadsID[sessionId]][i].AddMessage(new ToAbortRenderMessage()); } catch (Exception e) { m_log.Warning("renderQueue was already deleted. Error: " + m_renderAbortHandlers[m_threadsID[sessionId]][i].ToString() + ". ID: " + m_threadsID[sessionId].ToString()); m_log.Warning(e.Message); } } MessageQueue <MergerMessage> abortQueue = new MessageQueue <MergerMessage>(m_threadsID[sessionId].ToString() + "abort"); AbortMergeMessage mergerMessage = new AbortMergeMessage("uniqueBlob" + m_threadsID[sessionId].ToString() + '_' + sessionId.ToString(), m_threadsID[sessionId]); abortQueue.AddMessage(mergerMessage); m_renderAbortHandlers.Remove(m_threadsID[sessionId]); m_log.Info("Aborted by user. ID: " + m_threadsID[sessionId].ToString()); return(true); } catch (Exception e) { m_log.Error("Error for ID " + m_threadsID[sessionId] + " when checking connection status:" + e.Message); return(false); } } else { return(false); } }