Example #1
0
 /// <summary>
 /// Waits for merging process and sends finish message to dispatcher.
 /// </summary>
 /// <param name="finishMsg">Finish message from worker</param>
 private void finishRender(RenderingFinishMessage finishMsg)
 {
     try
     {
         waitForThreads();   //if at least one thread stuck here whole role will stop work
                             //but this sceario is very unlikely
         m_log.Info("getting flm URI");
         double spp             = -1;
         string completedFlmUri = string.Empty;
         if (!finishMsg.IsError)
         {
             completedFlmUri = saveFlmToBlob(m_scene.StartMessage.SessionId);
             if (m_stopBySpp)
             {
                 spp = m_scene.StartMessage.RequiredSpp;
             }
             else
             {
                 spp = m_engine.GetSppOfLoadedFLM();
             }
             m_log.Info("Sending message to dispatcher");
         }
         int id = Utils.RoleID();
         MergerFinishMessage msg = new MergerFinishMessage(id, m_scene.StartMessage.SessionId, completedFlmUri, spp,
                                                           finishMsg.IsError);
         m_dispatcherQueues[finishMsg.SceneID].AddMessage(msg);
     }
     catch (Exception e)
     {
         m_log.Warning("Error on worker. Probably error with scene. " + e.Message);
     }
 }
Example #2
0
        private bool mergerFinishMessageEvent(DispetcherMessage dispMessage)
        {
            try
            {
                MergerFinishMessage mergMessage = dispMessage as MergerFinishMessage;
                if (!mergMessage.IsError)
                {
                    m_connectionHandlers[dispMessage.SessionId].SendSynchMessage(new RenderFinishMessage(mergMessage.FlmUri, mergMessage.SPP));
                }
                else
                {
                    sendError(m_connectionHandlers[dispMessage.SessionId], "Error occurred on worker. Likely scene is damaged");
                }
                m_log.Info("SPP: " + mergMessage.SPP.ToString());
            }
            catch (Exception e)
            {
                m_log.Warning("Error sending sync message. " + e.Message);
            }
            if (m_renderAbortHandlers.ContainsKey(m_threadsID[dispMessage.SessionId]))
            {
                m_renderAbortHandlers.Remove(m_threadsID[dispMessage.SessionId]);
            }
            MessageQueue <DispetcherMessage> dispatcherHandler = new MessageQueue <DispetcherMessage>(m_threadsID[dispMessage.SessionId].ToString());

            dispatcherHandler.Delete();
            m_log.Info("/MergerFinishMessage.");
            return(true);
        }