public void handle()

in mqtt-exporter/src/main/java/org/apache/rocketmq/mqtt/exporter/http/MqttHTTPServer.java [261:305]


        public void handle(HttpExchange t) throws IOException {
            String query = t.getRequestURI().getRawQuery();
            String contextPath = t.getHttpContext().getPath();
            BackedFileOutputStream response = this.response.get();
            response.reset();
            OutputStreamWriter osw = new OutputStreamWriter(response, Charset.forName("UTF-8"));
            if ("/-/healthy".equals(contextPath)) {
                osw.write(HEALTHY_RESPONSE);
            } else {
                String contentType = TextFormat.chooseContentType(t.getRequestHeaders().getFirst("Accept"));
                t.getResponseHeaders().set("Content-Type", contentType);
                Predicate<String> filter = sampleNameFilterSupplier == null ? null : sampleNameFilterSupplier.get();
                filter = SampleNameFilter.restrictToNamesEqualTo(filter, parseQuery(query));
                if (filter == null) {
                    TextFormat.writeFormat(contentType, osw, registry.metricFamilySamples());
                } else {
                    TextFormat.writeFormat(contentType, osw, registry.filteredMetricFamilySamples(filter));
                }
            }

            osw.close();

            if (shouldUseCompression(t)) {
                t.getResponseHeaders().set("Content-Encoding", "gzip");
                t.sendResponseHeaders(HttpURLConnection.HTTP_OK, 0);
                final GZIPOutputStream os = new GZIPOutputStream(t.getResponseBody());
                try {
                    response.writeTo(os);
                } finally {
                    os.close();
                }
            } else {
                long contentLength = response.size();
                if (contentLength > 0) {
                    t.getResponseHeaders().set("Content-Length", String.valueOf(contentLength));
                }
                if (t.getRequestMethod().equals("HEAD")) {
                    contentLength = -1;
                }
                t.sendResponseHeaders(HttpURLConnection.HTTP_OK, contentLength);
                response.writeTo(t.getResponseBody());
            }
            t.close();
            response.reset();
        }