Skip to content

Instantly share code, notes, and snippets.

@tugberkugurlu
Forked from darrelmiller/gist:2026145
Created March 13, 2012 09:58
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tugberkugurlu/2027936 to your computer and use it in GitHub Desktop.
Save tugberkugurlu/2027936 to your computer and use it in GitHub Desktop.
ThroughputMessageHandler
public class ThroughputMessageHandler : DelegatingHandler
{
private readonly ILogger _logger;
private Timer _timer;
private int _count;
public ThroughputMessageHandler(ILogger logger)
{
_logger = logger;
_count = 0;
_timer = new Timer(new TimerCallback(timerCallback),null,1000,1000);
}
private void timerCallback(object state)
{
_logger.Log("perf",TraceLevel.Verbose,() => _count + " req/sec");
_count = 0;
}
protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
return base.SendAsync(request, cancellationToken)
.ContinueWith((t) => {
lock (this)
{
_count++;
}
return t.Result;
});
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment