public static void MetricForResponseSize(this INancyModule module, string metricName, Predicate<RouteDescription> routePredicate) { var name = string.Format("{0}.{1}", module.GetType().Name, metricName); CheckNancyMetricsIsConfigured(); var histogram = NancyMetrics.CurrentConfig.Registry.Histogram(name, Unit.Custom("bytes"), SamplingType.FavourRecent); module.After.AddItemToEndOfPipeline(ctx => { if (routePredicate(ctx.ResolvedRoute.Description)) { string lengthHeader; // if available use content length header if (ctx.Response.Headers.TryGetValue("Content-Length", out lengthHeader)) { long length; if (long.TryParse(lengthHeader, out length)) { histogram.Update(length); } } else { // if no content length - get the length of the stream // this might be suboptimal for some types of requests using (var ns = new NullStream()) { ctx.Response.Contents(ns); histogram.Update(ns.Length); } } } }); }
public Engine() { var options = new Dictionary<string, object>(); options["DivisionOptions"] = PythonDivisionOptions.New; _history = new NullStream(); _output = new EventRaisingStreamWriter(_history); _output.StringWritten += _output_StringWritten; _engine = Python.CreateEngine(options); _engine.Runtime.IO.SetOutput(_history, _output); _engine.Runtime.IO.SetErrorOutput(_history, _output); _scope = _engine.CreateScope(); foreach (var t in _pluggable) { _scope.SetVariable(t.Name, DynamicHelpers.GetPythonTypeFromType(t)); } _scope.SetVariable("CalculatorFunctions", DynamicHelpers.GetPythonTypeFromType(typeof(CalculatorFunctions))); _functioncache = new Dictionary<string, string>(); //hidden functions _functioncache.Add("Var", "CalculatorFunctions.Var"); _functioncache.Add("FncList", "CalculatorFunctions.FncList"); _functioncache.Add("RegFunction", "CalculatorFunctions.RegFunction"); foreach (var f in _functions) { if (_functioncache.ContainsKey(f.Name)) continue; _functioncache.Add(f.Name, f.FullName); } LoadBitops(); }
private void CheckAndSetContentLength(Response response) { if (this.Headers.ContainsKey(ContentLength)) { return; } using (var nullStream = new NullStream()) { response.Contents.Invoke(nullStream); this.Headers[ContentLength] = nullStream.Length.ToString(CultureInfo.InvariantCulture); } }
static byte[] GetHash(string fullPath) { try { using (var hasher = MD5.Create()) { using (var outStream = new NullStream()) { using (var csStream = new CryptoStream(outStream, hasher, CryptoStreamMode.Write)) new BinaryWriter(csStream).Write(File.ReadAllBytes(fullPath)); } return hasher.Hash; } } catch { } return null; }
protected virtual long MeasureOverride() { var nullStream = new NullStream(); var streamLimiter = new StreamLimiter(nullStream); Serialize(streamLimiter, null); return streamLimiter.RelativePosition; }
protected virtual void Dispose(bool native) { if (_output != null) { _output.Dispose(); _output = null; } if (_history != null) { _history.Dispose(); _history = null; } }
static byte[] GetHash(string fullPath) { try { using (var reader = new BinaryReader(new FileStream(fullPath, FileMode.Open, FileAccess.Read, FileShare.Read))) { reader.BaseStream.Position = HASH_FILE_OFFSET; var bytes = reader.ReadBytes(HASH_SIZE); if (bytes.Length != HASH_SIZE) return null; using (var hasher = MD5.Create()) { using (var outStream = new NullStream()) { using (var csStream = new CryptoStream(outStream, hasher, CryptoStreamMode.Write)) new BinaryWriter(csStream).Write(bytes); } return hasher.Hash; } } } catch { } return null; }
/* ----------------------------------------------------------------- */ /// /// SaveWithJpegQuality /// /// <summary> /// JPEG の画質を指定して保存する.JPEG の画質は設定画面の内容に /// 従って決定する. /// </summary> /// /* ----------------------------------------------------------------- */ private void SaveWithJpegQuality(Image image, string dest) { ImageCodecInfo jpegEncoder = null; foreach (ImageCodecInfo enc in ImageCodecInfo.GetImageEncoders()) { if (enc.FormatID == ImageFormat.Jpeg.Guid) { jpegEncoder = enc; break; } } Int64 jpgqual = 0; if (radio_filesize.Checked) { Int64 min = 0, max = 101; for (int i = 0; i < 7; ++i) { Int64 mid = (max + min) / 2; NullStream ns = new NullStream(); EncoderParameters ep = new EncoderParameters(1); EncoderParameter testqual = new EncoderParameter(Encoder.Quality, mid); ep.Param[0] = testqual; image.Save(ns, jpegEncoder, ep); if (ns.Length <= numeric_filesize.Value * 1024) min = mid; else max = mid; } jpgqual = min; } else { jpgqual = (Int64)numeric_quality.Value; } EncoderParameters encParams = new EncoderParameters(1); EncoderParameter quality = new EncoderParameter(Encoder.Quality, jpgqual); encParams.Param[0] = quality; image.Save(dest, jpegEncoder, encParams); }