예제 #1
0
        public async Task <float> measureDownloadSpeed(Uri uri)
        {
            Contract.Requires(uri != null);
            var req = WebRequest.Create(uri);

            req.Credentials = CredentialCache.DefaultCredentials;
            req.Proxy       = hch.Proxy;
            req.CachePolicy = new System.Net.Cache.RequestCachePolicy(System.Net.Cache.RequestCacheLevel.NoCacheNoStore);
            emitProgressEvent(0);
            float speed;

            using (var devNull = new DevNullStream()) {
                using (var resp = await req.GetResponseAsync() as HttpWebResponse) {
                    var len = resp.ContentLength;
                    EventedStream.dataLoadListener cb = (o, bytes) => emitProgressEvent(bytes * 100 / len);
                    using (var str = resp.GetResponseStream()) {
                        devNull.onLoading += cb;
                        sw.Restart();
                        await str.CopyToAsync(devNull);

                        sw.Stop();
                        devNull.onLoading -= cb;
                    }
                    speed = (float)(len / (sw.Elapsed.TotalSeconds));
                }
            }
            return(speed);
        }
예제 #2
0
        //-----------------------------------------------------------------------------------------

        private long Compress(Func <Stream, Stream> compressionStreamFunc)
        {
            using (var ms = new DevNullStream())
            {
                using (var cs = compressionStreamFunc(ms))
                {
                    cs.Write(data, 0, data.Length);
                }

                return(ms.Length);
            }
        }
		public async Task<float> measureDownloadSpeed(Uri uri){
			Contract.Requires(uri != null);
			var req = WebRequest.Create(uri);
			req.Credentials = CredentialCache.DefaultCredentials;
			req.Proxy = hch.Proxy;
			req.CachePolicy = new System.Net.Cache.RequestCachePolicy(System.Net.Cache.RequestCacheLevel.NoCacheNoStore);
			emitProgressEvent(0);
			float speed;
			using (var devNull = new DevNullStream()) {
				using (var resp = await req.GetResponseAsync() as HttpWebResponse) {
					var len = resp.ContentLength;
					EventedStream.dataLoadListener cb = (o,bytes) => emitProgressEvent(bytes*100/len);
					using (var str = resp.GetResponseStream()) {
						devNull.onLoading += cb;
						sw.Restart();
						await str.CopyToAsync(devNull);
						sw.Stop();
						devNull.onLoading -= cb;
					}
					speed = (float)(len / (sw.Elapsed.TotalSeconds));
				}
			}
			return speed;
		}
예제 #4
0
 public async Task RangedRandomToDevNull()
 {
     using (Stream cs = new RangedRandomBytesStream(defCount, 0xAD, 0xEF), dns = new DevNullStream())
         await dns.CopyToAsync(cs);
 }
예제 #5
0
 public async Task ConstantToDevNull()
 {
     using (Stream cs = new ConstantStream(defCount, new byte[] { 0xDE, 0xAD, 0xBE, 0xEF }), dns = new DevNullStream())
         await dns.CopyToAsync(cs);
 }
 public async Task RangedRandomToDevNull()
 {
     using (Stream cs = new RangedRandomBytesStream(defCount, 0xAD, 0xEF), dns = new DevNullStream())
         await dns.CopyToAsync(cs);
 }
 public async Task ConstantToDevNull()
 {
     using (Stream cs = new ConstantStream(defCount, new byte[] { 0xDE, 0xAD, 0xBE, 0xEF }), dns = new DevNullStream())
        await dns.CopyToAsync(cs);
 }