Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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;
            }
        }