11#if ! COREFX
22
33using System . Collections . Generic ;
4- using System . Net ;
5- using Prometheus . Client . Collectors ;
6- using System . IO ;
7- using System . Text ;
84using System . Diagnostics ;
5+ using System . IO ;
6+ using System . Net ;
97using System . Threading ;
8+ using Prometheus . Client . Collectors ;
109
1110namespace Prometheus . Client . MetricServer
1211{
@@ -15,9 +14,9 @@ namespace Prometheus.Client.MetricServer
1514 /// </summary>
1615 public class MetricServer : BaseMetricServer , IMetricServer
1716 {
18- private Thread _bgThread ;
1917 private readonly HttpListener _httpListener = new HttpListener ( ) ;
20- private bool _isListening = false ;
18+ private Thread _bgThread ;
19+ private bool _isListening ;
2120
2221 /// <summary>
2322 /// Constructor
@@ -56,14 +55,22 @@ public MetricServer(string hostname, int port, string url, IEnumerable<IOnDemand
5655 /// <inheritdoc />
5756 public void Start ( )
5857 {
59- _bgThread = new Thread ( new ThreadStart ( StartListen ) )
58+ _bgThread = new Thread ( StartListen )
6059 {
6160 IsBackground = true ,
6261 Name = "MetricsServer"
6362 } ;
6463 _bgThread . Start ( ) ;
6564 }
6665
66+ /// <inheritdoc />
67+ public void Stop ( )
68+ {
69+ _isListening = false ;
70+ _httpListener . Stop ( ) ;
71+ _httpListener . Close ( ) ;
72+ }
73+
6774 private void StartListen ( )
6875 {
6976 _httpListener . Start ( ) ;
@@ -73,23 +80,22 @@ private void StartListen()
7380 {
7481 try
7582 {
76- HttpListenerContext context = _httpListener . GetContext ( ) ;
77- HttpListenerRequest request = context . Request ;
78- HttpListenerResponse response = context . Response ;
79-
80- string requestBody ;
81- Stream inputStream = request . InputStream ;
82- Encoding encoding = request . ContentEncoding ;
83- StreamReader reader = new StreamReader ( inputStream , encoding ) ;
84- requestBody = reader . ReadToEnd ( ) ;
83+ var context = _httpListener . GetContext ( ) ;
84+ var request = context . Request ;
85+ var response = context . Response ;
86+
87+ var inputStream = request . InputStream ;
88+ var encoding = request . ContentEncoding ;
89+ var reader = new StreamReader ( inputStream , encoding ) ;
90+ reader . ReadToEnd ( ) ;
8591 response . StatusCode = 200 ;
8692
8793 var acceptHeader = request . Headers . Get ( "Accept" ) ;
8894 var acceptHeaders = acceptHeader ? . Split ( ',' ) ;
8995 var contentType = ScrapeHandler . GetContentType ( acceptHeaders ) ;
9096 response . ContentType = contentType ;
9197
92- using ( Stream outputStream = response . OutputStream )
98+ using ( var outputStream = response . OutputStream )
9399 {
94100 var collected = Registry . CollectAll ( ) ;
95101 ScrapeHandler . ProcessScrapeRequest ( collected , contentType , outputStream ) ;
@@ -101,16 +107,6 @@ private void StartListen()
101107 Trace . WriteLine ( $ "Error in MetricsServer: { ex } ") ;
102108 }
103109 }
104-
105- }
106-
107- /// <inheritdoc />
108- public void Stop ( )
109- {
110- _isListening = false ;
111- _httpListener . Stop ( ) ;
112- _httpListener . Close ( ) ;
113-
114110 }
115111 }
116112}
0 commit comments