internal RetrievePixelDataResult(DicomCompressedPixelData compressedPixelData, FrameStreamingResultMetaData resultMetaData) { _compressedPixelData = compressedPixelData; _metaData = resultMetaData; }
public RetrievePixelDataResult RetrievePixelData(string serverAE, string studyInstanceUID, string seriesInstanceUID, string sopInstanceUid, int frame) { try { CodeClock clock = new CodeClock(); clock.Start(); FrameStreamingResultMetaData result = new FrameStreamingResultMetaData(); StringBuilder url = new StringBuilder(); if (_baseUri.ToString().EndsWith("/")) { url.AppendFormat("{0}{1}", _baseUri, serverAE); } else { url.AppendFormat("{0}/{1}", _baseUri, serverAE); } url.AppendFormat("?requesttype=WADO&studyUID={0}&seriesUID={1}&objectUID={2}", studyInstanceUID, seriesInstanceUID, sopInstanceUid); url.AppendFormat("&frameNumber={0}", frame); url.AppendFormat("&contentType={0}", HttpUtility.HtmlEncode("application/Macro")); result.Speed.Start(); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url.ToString()); request.Accept = "application/dicom,application/Macro,image/jpeg"; request.Timeout = (int)TimeSpan.FromSeconds(StreamingSettings.Default.ClientTimeoutSeconds).TotalMilliseconds; request.KeepAlive = false; HttpWebResponse response = (HttpWebResponse)request.GetResponse(); if (response.StatusCode != HttpStatusCode.OK) { throw new StreamingClientException(response.StatusCode, HttpUtility.HtmlDecode(response.StatusDescription)); } Stream responseStream = response.GetResponseStream(); BinaryReader reader = new BinaryReader(responseStream); byte[] buffer = reader.ReadBytes((int)response.ContentLength); reader.Close(); responseStream.Close(); response.Close(); result.Speed.SetData(buffer.Length); result.Speed.End(); result.ResponseMimeType = response.ContentType; result.Status = response.StatusCode; result.StatusDescription = response.StatusDescription; result.Uri = response.ResponseUri; result.ContentLength = buffer.Length; result.IsLast = (response.Headers["IsLast"] != null && bool.Parse(response.Headers["IsLast"])); clock.Stop(); PerformanceReportBroker.PublishReport("Streaming", "RetrievePixelData", clock.Seconds); RetrievePixelDataResult pixelDataResult; if (response.Headers["Compressed"] != null && bool.Parse(response.Headers["Compressed"])) { pixelDataResult = new RetrievePixelDataResult(CreateCompressedPixelData(response, buffer), result); } else { pixelDataResult = new RetrievePixelDataResult(buffer, result); } return(pixelDataResult); } catch (WebException ex) { if (ex.Status == WebExceptionStatus.ProtocolError && ex.Response is HttpWebResponse) { HttpWebResponse response = (HttpWebResponse)ex.Response; throw new StreamingClientException(response.StatusCode, HttpUtility.HtmlDecode(response.StatusDescription)); } throw new StreamingClientException(StreamingClientExceptionType.Network, ex); } }
internal RetrievePixelDataResult(byte[] uncompressedPixelData, FrameStreamingResultMetaData resultMetaData) { _pixelData = uncompressedPixelData; _metaData = resultMetaData; }