示例#1
0
        private void ComputePlotAverage(out List <DateTime> timePoints, out List <double> retrieveMbPerSecond)
        {
            timePoints          = new List <DateTime>();
            retrieveMbPerSecond = new List <double>();

            for (int i = 0; i < _component.PerformanceInfo.Count; ++i)
            {
                DateTime minStartTime = DateTime.MaxValue;
                DateTime maxEndTime   = DateTime.MinValue;
                long     totalBytes   = 0;

                for (int j = 0; j < (int)_plotAverage.Value && i < _component.PerformanceInfo.Count; ++j, ++i)
                {
                    StreamingPerformanceInfo performanceInfo = _component.PerformanceInfo[i];
                    totalBytes += performanceInfo.TotalBytesTransferred;

                    if (performanceInfo.StartTime < minStartTime)
                    {
                        minStartTime = performanceInfo.StartTime;
                    }
                    if (performanceInfo.EndTime > maxEndTime)
                    {
                        maxEndTime = performanceInfo.EndTime;
                    }
                }

                long   averageTicks       = minStartTime.Ticks + (maxEndTime.Ticks - minStartTime.Ticks) / 2;
                double timeSpanSeconds    = maxEndTime.Subtract(minStartTime).TotalSeconds;
                double averageMbPerSecond = totalBytes / timeSpanSeconds / 1024 / 1024 * 8;
                timePoints.Add(new DateTime(averageTicks));
                retrieveMbPerSecond.Add(averageMbPerSecond);
            }
        }
示例#2
0
            public void Retrieve()
            {
                if (!_alreadyRetrieved)
                {
                    //construct this object before the lock so there's no chance of deadlocking
                    //with the parent data source (because we are accessing it's tags at the
                    //same time as it's trying to get the pixel data).
                    FramePixelDataRetriever retriever = new FramePixelDataRetriever(this, Parent.binaryStream, Parent.useBulkLoading);

                    lock (_syncLock)
                    {
                        if (!_alreadyRetrieved)
                        {
                            DateTime start = DateTime.Now;
                            _retrieveResult = retriever.Retrieve();
                            DateTime end = DateTime.Now;

                            _lastRetrievePerformanceInfo =
                                new StreamingPerformanceInfo(start, end, _retrieveResult.MetaData.ContentLength);

                            _alreadyRetrieved = true;
                        }
                    }
                }
            }
        private void OnRetrievedFrame(object frameDataTransferInfo)
        {
            StreamingPerformanceInfo transferInfo = frameDataTransferInfo as StreamingPerformanceInfo;

            if (transferInfo != null)
            {
                _performanceInfo.Add(transferInfo);
            }

            NotifyPropertyChanged("NumberOfRetrieveItems");
            NotifyPropertyChanged("NumberOfDecompressItems");
        }
			public void Retrieve()
			{
				if (!_alreadyRetrieved)
				{
					//construct this object before the lock so there's no chance of deadlocking
					//with the parent data source (because we are accessing it's tags at the 
					//same time as it's trying to get the pixel data).
					FramePixelDataRetriever retriever = new FramePixelDataRetriever(this);

					lock (_syncLock)
					{
                        if (!_alreadyRetrieved)
                        {
                            AbortAttemptIfNecessary();

                            
                            try
                            {
                                ResetAttemptData();
                                _retrievesAttempted++;
                                var start = DateTime.Now;
                                _retrieveResult = retriever.Retrieve();
                                var end = DateTime.Now;
                                _lastRetrievePerformanceInfo =
                                    new StreamingPerformanceInfo(start, end, _retrieveResult.MetaData.ContentLength);

                                _alreadyRetrieved = true;
                            }
                            catch (Exception ex)
                            {
                                _lastError = ex;
                                throw;
                            }
                        }
					}
				}
			}