public static IDisposable CreateReader(MemoryStream stream, out IGpxReader reader, out IStreamProgress streamProgress) { var result = new GpxReader(stream); streamProgress = new StreamProgress(stream); reader = result; return(result); }
public static IDisposable CreateReader <TTrackPoint>(MemoryStream stream, IGpxTrackPointReader <TTrackPoint> trackPointReader, out IGpxReader reader, out IStreamProgress streamProgress) where TTrackPoint : GpxTrackPoint, new() { var result = new GpxReader <TTrackPoint>(stream, trackPointReader ?? new NopTrackPointReader <TTrackPoint>()); streamProgress = new StreamProgress(stream); reader = result; return(result); }
protected virtual void OnStreamProgress(double prepareProgress, double progress, int seeds, double downloadSpeed) { StreamProgress?.Invoke(this, new StreamProgressEventArgs(prepareProgress, progress, seeds, downloadSpeed)); }
private void Progress_ProgressChanged(object sender, StreamProgress e) { Console.WriteLine($"{e.progress:0.00}% - {(e.bytesPerSecond * 1024):0.00}Mb"); }
public static void RequestStream(string address, string endpoint, Stream output, StreamProgress progress, int blockSize = 0x8FFFF) { try { var request = HttpWebRequest.Create($@"http://{address}/{endpoint}"); request.ContentType = "application/json"; request.Method = "POST"; var bodyStream = request.GetRequestStream(); var response = request.GetResponse(); using (var stream = response.GetResponseStream()) { long current = 0; long total = response.ContentLength; byte[] block = new byte[blockSize]; while (current < total) { int read = stream.Read(block, 0, blockSize); if (read > 0) { output.Write(block, 0, read); current += read; progress(current, total, read); } else { progress(current, total, read); break; } } } } catch (Exception e) { Console.WriteLine(e.Message); } }