示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#3
0
 protected virtual void OnStreamProgress(double prepareProgress, double progress, int seeds, double downloadSpeed)
 {
     StreamProgress?.Invoke(this, new StreamProgressEventArgs(prepareProgress, progress, seeds, downloadSpeed));
 }
示例#4
0
 private void Progress_ProgressChanged(object sender, StreamProgress e)
 {
     Console.WriteLine($"{e.progress:0.00}% - {(e.bytesPerSecond * 1024):0.00}Mb");
 }
示例#5
0
        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);
            }
        }