private bool mergerUpdateMessageEvent(DispetcherMessage dispMessage) { try { m_log.Info("MergerUpdateMessage. ID: " + m_threadsID[dispMessage.SessionId].ToString()); MergerUpdateMessage mergMessage = dispMessage as MergerUpdateMessage; CloudBlockBlob imageBlob; lock (m_BlobLock) { imageBlob = renderStorage.Get().CreateBlob(BlobName.IMAGE_BLOB, mergMessage.ImagePath); } m_log.Info("Merger completed percent: " + mergMessage.PercentageCompleted); float percentageCompleted = Math.Min(mergMessage.PercentageCompleted, 100); percentageCompleted = (float)Math.Round(percentageCompleted, 2, MidpointRounding.AwayFromZero); m_log.Info("Percentage completed: " + percentageCompleted.ToString()); m_log.Info("Merger completed spp: " + mergMessage.SPP.ToString()); m_log.Info("Fetching image. ID: " + m_threadsID[dispMessage.SessionId].ToString()); byte[] image = Utils.DownloadBlobToArray(imageBlob); m_log.Info("Deleting image from blob"); double spp = 0; if ((mergMessage.RequiredSpp != 0) && (mergMessage.SPP > mergMessage.RequiredSpp)) { spp = mergMessage.RequiredSpp; } else { spp = mergMessage.SPP; } ImageMessage pngMes = new ImageMessage(image.Length, percentageCompleted, spp); m_log.Info("Sending message to client. ID: " + m_threadsID[dispMessage.SessionId].ToString()); m_connectionHandlers[dispMessage.SessionId].SendSynchMessage(pngMes); m_log.Info("Sending picture to client. ID: " + m_threadsID[dispMessage.SessionId].ToString()); m_connectionHandlers[dispMessage.SessionId].SendFile(image); m_log.Info("/MergerUpdateMessage. ID: " + m_threadsID[dispMessage.SessionId].ToString()); } catch (Exception ex) { m_log.Error("MergerUpdateMessage ex: " + ex.Message); } return(false); }
private void updateMessageEvent(MergerMessage merMessage) { m_log.Info("ToMergeMessage. ID: " + m_scene.SceneID.ToString()); lock (m_downloadFlmLock) { ++m_threadsCount; } ToMergeMessage toMergeMessege = merMessage as ToMergeMessage; Utils.ThreadLocalSceneBlob threadSceneNode = new Utils.ThreadLocalSceneBlob(); m_log.Info("InitializeSceneNode. ID: " + m_scene.SceneID.ToString()); initializeSceneNode(toMergeMessege, threadSceneNode); m_log.Info("/InitializeSceneNode. ID: " + m_scene.SceneID.ToString()); m_log.Info("Merge. ID: " + m_scene.SceneID.ToString()); merge(threadSceneNode); m_log.Info("/Merge. ID: " + m_scene.SceneID.ToString()); //scene name means .png blob uri lock (m_makePicLock) { if (!m_stopBySpp) { m_percentageCompleted += m_oneBatchInPercents; } if (m_makePicStopwatch.ElapsedMilliseconds > DocConstants.MAKE_PICTURE_HOLDUP) { createImage(threadSceneNode.OutputBlob); double spp = m_engine.GetSppOfLoadedFLM(); m_log.Info("SPP: " + spp); if (m_stopBySpp) { m_percentageCompleted = (float)((spp * 100.0) / m_scene.StartMessage.RequiredSpp); } m_log.Info("Completed " + m_percentageCompleted); MergerUpdateMessage updateMsg = new MergerUpdateMessage(threadSceneNode.SceneName, m_scene.StartMessage.SessionId, m_percentageCompleted, spp, m_requiredSpp); m_dispatcherQueues[toMergeMessege.ID].AddMessage(updateMsg); m_makePicStopwatch.Restart(); } --m_threadsCount; } }