private void CalculatePercentComplete(DataSentArgs e) { long soFar = e.BytesSent; long total = e.BytesTotal; int percentComplete = (int)Math.Ceiling((double)soFar / (double)total * 100); Session["percentComplete"] = percentComplete; }
void CompareService_OnDataSent(object sender, DataSentArgs e) { try { CalculateDataRate(e); CalculatePercentComplete(e); if (e.BytesSent == e.BytesTotal) { MarkComplete(); } } catch (Exception ex) { ShowMessage(ex.Message); } }
private void CalculateDataRate(DataSentArgs e) { long bytespersec = 0; long mbytesperminute = 0; if (e.BytesSent == 0) { _startTime = DateTime.Now; bytespersec = 0; mbytesperminute = 0; } else { DateTime currentTime = DateTime.Now; TimeSpan diffrence = currentTime - _startTime; double second = diffrence.TotalSeconds; if (second != 0) { double kbbytes = e.BytesSent / 1024; bytespersec = (long)(kbbytes / second); mbytesperminute = (bytespersec * 60) / 1024; } else { bytespersec = (long)Session["bytesPerSec"]; mbytesperminute = (long)Session["MbytesPerMin"]; } } //To accomodate hight data rate in case of namedPipe protocol bytespersec = bytespersec / _divideFactor; mbytesperminute = mbytesperminute / _divideFactor; Session["bytesPerSec"] = bytespersec; Session["MbytesperMin"] = mbytesperminute; }
/// <summary> /// Fired by CompareService after sending each chunk of data. We use this event to calculate the /// progress of data transfer to the Compare Service. It is only for data transfer purposes. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void CompareService_OnDataSent(object sender, DataSentArgs e) { UploadInfo uploadInfo = Session["UploadInfo"] as UploadInfo; if (uploadInfo == null) { return; } uploadInfo.IsReady = true; long soFar = e.BytesSent; long total = e.BytesTotal; int percentComplete = 0; if (total > 0) { percentComplete = (int)Math.Ceiling((double)soFar / total * 100); } uploadInfo.PercentComplete = percentComplete; string msg = "Chunking {0} - Number of bytes sent: {1} Bytes"; if (e.IsOriginalFile) { msg = string.Format(msg, "Original file [ {0} ]", e.BytesSent); msg = string.Format(msg, _originalFileName); } else { msg = string.Format(msg, "Modified file [ {0} ]", e.BytesSent); msg = string.Format(msg, _modifiedFileName); } uploadInfo.Message = msg; }
private void comparer_CompareProgress(object sender, DataSentArgs e) { if (this.InvokeRequired) { this.Invoke(new CompareProgressDelegate(comparer_CompareProgress), new object[] { sender, e }); return; } if (e.IsOriginalFile) { if (e.BytesSent == 0) { this.timeStartSendingOriginal = System.DateTime.Now; this.labelOriginalBytesPerSec.Text = "0"; this.labelOriginalBytesSent.Text = "0 / 0"; System.Diagnostics.Trace.WriteLine("Starting to send original file"); } else { double numMSecondsEllapsed = (System.DateTime.Now - this.timeStartSendingOriginal).TotalMilliseconds; System.Diagnostics.Trace.WriteLine("Send original file: " + e.BytesSent + " bytes in " + numMSecondsEllapsed + " ms"); if (numMSecondsEllapsed > 0) { int bytesPerMSecond = (int)((double)e.BytesSent / numMSecondsEllapsed); this.labelOriginalBytesPerSec.Text = (bytesPerMSecond * 1000 / 1024).ToString(); } else { this.labelOriginalBytesPerSec.Text = "~"; } this.labelOriginalBytesSent.Text = e.BytesSent + " / " + e.BytesTotal; this.progressOriginal.Value = (int)(this.progressOriginal.Maximum * e.BytesSent / e.BytesTotal); if (e.BytesSent == e.BytesTotal) { this.butStart.Enabled = true; } } } else { if (e.BytesSent == 0) { this.progressModified.Value = this.progressModified.Minimum; this.timeStartSendingModified = System.DateTime.Now; this.labelModifiedBytesPerSec.Text = "0"; this.labelModifiedBytesSent.Text = "0 / 0"; System.Diagnostics.Trace.WriteLine("Starting to send modified file"); } else { double numMSecondsEllapsed = (System.DateTime.Now - this.timeStartSendingModified).TotalMilliseconds; System.Diagnostics.Trace.WriteLine("Send modified file: " + e.BytesSent + " bytes in " + numMSecondsEllapsed + " ms"); if (numMSecondsEllapsed > 0) { int bytesPerMSecond = (int)((double)e.BytesSent / numMSecondsEllapsed); this.labelModifiedBytesPerSec.Text = (bytesPerMSecond * 1000 / 1024).ToString(); } else { this.labelModifiedBytesPerSec.Text = "~"; } this.labelModifiedBytesSent.Text = e.BytesSent + " / " + e.BytesTotal; this.progressModified.Value = (int)(this.progressModified.Maximum * e.BytesSent / e.BytesTotal); } } }