private static void InvokeProgressReport(ProgressReportEventHandler report, object sender, TFileReport args) { if (report != null) { report(sender, args); } }
private void OnProgessReport(int progressValue) { ProgressReportEventHandler handler = ProgressReport; if (handler != null) { handler(progressValue); } }
/// <summary> /// /// </summary> /// <param name="stream"></param> /// <param name="source"></param> /// <param name="count">Cantidad en bytes</param> /// <param name="report"></param> public static void CopyFrom(this Stream stream, Stream source, long count, ProgressReportEventHandler report) { int bufferSize = MB_SIZE; byte[] buffer = new byte[bufferSize]; int counts = 0, length = ((int)count / bufferSize) + 1; int readers = 1; long llevo = 0; while (llevo < count && readers > 0) { readers = source.Read(buffer, 0, bufferSize); if (llevo + readers <= count) { stream.Write(buffer, 0, readers); llevo += readers; counts++; InvokeProgressReport(report, stream, new TFileReport { Copied = counts, Length = length }); } else { var aux = new List <byte>(); foreach (var item in buffer) { if (llevo + aux.Count > count) { break; } aux.Add(item); } llevo += aux.Count; stream.Write(aux.ToArray(), 0, aux.Count); } } }
/// <summary> /// Decompress stream using defleate algorithm /// </summary> /// <param name="stream">Stream to decompress</param> /// <param name="output">Output stream</param> /// <param name="count">Count of bytes to decompress</param> /// <param name="offset">Offset on the output stream</param> /// <param name="report">Progress report handler</param> public static void DeCompressTo(this Stream stream, Stream output, long count, long offset = 0, ProgressReportEventHandler report = null) { if (output == null) { throw new ArgumentNullException("output"); } output.Position = offset; using (DeflateStream deflateStream = new DeflateStream(stream, CompressionMode.Decompress, true)) { deflateStream.CopyTo(output); } InvokeProgressReport(report, stream, new TFileReport { Copied = count / 4096, Length = count / 4096 }); }
/// <summary> /// Compress stream using defleate algorithm /// </summary> /// <param name="stream">Stream to compress</param> /// <param name="output">Output streamm</param> /// <param name="count">Count of bytes to compress</param> /// <param name="offset">Offset on the output stream</param> /// <param name="report">Progress report handler</param> public static void CompressTo(this Stream stream, Stream output, long count, long offset = 0, ProgressReportEventHandler report = null) { if (output == null) { throw new ArgumentNullException("output"); } output.Position = offset; using (DeflateStream deflateStream = new DeflateStream(output, CompressionMode.Compress, true)) { deflateStream.CopyFrom(stream, count, report); } }
public void AddProgressReportEvent(ProgressReportEventHandler evt) { _transfer.DiscoveryProgress += evt; }