/// <summary> /// Handles the stopped streamers, disposes and removes them from the list of current steamers. /// </summary> /// <param name="sender">The streamer which raised this event.</param> /// <param name="e">Generic event arguments, not used.</param> private void Streamer_Stopped(object sender, AsyncCompletedEventArgs e) { lock (this.streamers) { HystrixMetricsStreamer streamer = (HystrixMetricsStreamer)sender; streamer.Stopped -= this.Streamer_Stopped; streamer.Dispose(); this.streamers.Remove(streamer); if (this.streamers.Count == 0) { this.sampler.Stop(); } } }
/// <summary> /// Creates and starts a new <see cref="HystrixMetricsStreamer"/> instance. /// </summary> /// <param name="context">The listener context passed through to the new streamer.</param> private void CreateAndStartStreamer(HttpListenerContext context) { HystrixMetricsStreamer streamer = null; try { streamer = new HystrixMetricsStreamer(this.sampler, context); streamer.Stopped += this.Streamer_Stopped; streamer.Start(); this.streamers.Add(streamer); } catch { if (streamer != null) { streamer.Dispose(); } throw; } }