} // GetDvbStpClientSegmentInfoList private void Deserialize() { if (Request.AvoidDeserialization) { return; } Worker.ReportProgress(999); foreach (var payload in Request.Payloads) { if (payload.XmlType != null) { payload.XmlDeserializedData = UiDvbStpSimpleDownloadResponse.ParsePayload(payload.XmlType, payload.Data, payload.PayloadId, !Request.AllowXmlExtraWhitespace, Request.XmlNamespaceReplacer); } // if if (!Request.KeepRawData) { payload.Data = null; } // if } // foreach } // Deserialize
} // constructor #region DownloadDlg events private void DownloadDlg_Load(object sender, EventArgs e) { if (Request == null) { throw new ArgumentNullException(); } TelemetryScreenName = string.Format("{0}: {1}:{2} 0x{3:X2}", this.GetType().Name, Request.MulticastAddress, Request.MulticastPort, Request.PayloadId); if (!string.IsNullOrEmpty(Request.Description)) { labelDownloadingPayloadName.Text = Request.Description; } // if labelDownloadSource.Text = string.Format(labelDownloadSource.Text, Request.MulticastAddress, Request.MulticastPort); FormatProgressPercentage = labelProgressPct.Text; FormatSectionProgress = labelSectionProgress.Text; FormatEllapsedTime = labelEllapsedTime.Text; DataReceptionSymbol = labelDataReception.Text[0]; labelProgressPct.Text = null; labelSectionProgress.Text = null; labelDataReception.Text = null; labelReceiving.Visible = false; labelEllapsedTime.Text = null; Response = new UiDvbStpSimpleDownloadResponse(); } // DownloadDlg_Load
} // Response protected override UiDvbStpBaseDownloadResponse ShowDialog(IWin32Window owner) { using (var dlg = new DvbStpSimpleDownloadDialog(Request)) { dlg.ShowDialog(owner); TelemetryScreenName = dlg.TelemetryScreenName; Response = dlg.Response; return(Response); } // using } // ShowDialog
} // DisplayParsingData #endregion #region BackgroundWorker DoWork void Worker_DoWork(object sender, DoWorkEventArgs e) { DvbStpSimpleClient stpClient; byte[] payload; InitWorker(e); stpClient = new DvbStpSimpleClient(Request.MulticastAddress, Request.MulticastPort); CancelDownloadRequest = stpClient.CancelRequest; try { stpClient.ReceiveDatagramTimeout = Request.ReceiveDatagramTimeout; stpClient.NoDataTimeout = Request.NoDataTimeout; stpClient.SectionReceived += StpClient_SectionReceived; stpClient.PayloadSectionReceived += StpClient_PayloadSectionReceived; payload = stpClient.GetPayload(Request.PayloadId, Request.SegmentId); Response.Version = stpClient.SegmentVersion; e.Result = payload; #if DEBUG if ((payload != null) && (Request.DumpToFile != null)) { File.WriteAllBytes(Request.DumpToFile, payload); } // if #endif if ((Request.PayloadDataType != null) && (payload != null)) { Worker.ReportProgress(int.MaxValue); Response.DeserializedPayloadData = UiDvbStpSimpleDownloadResponse.ParsePayload(Request.PayloadDataType, payload, Request.PayloadId, !Request.AllowXmlExtraWhitespace, Request.XmlNamespaceReplacer); } // if } finally { e.Cancel = Worker.CancellationPending; stpClient.Close(); } // finally } // Worker_DoWork