public void handle()

in prometheus-starter-all/prometheus-diy-starter/src/main/java/org/apache/ozhera/prometheus/starter/all/exporter/HTTPServer.java [75:139]


        public void handle(HttpExchange t) throws IOException {
            try {
                String query = t.getRequestURI().getRawQuery();
                String path = t.getRequestURI().getPath();
                String contextPath = t.getHttpContext().getPath();
                ByteArrayOutputStream response = this.response.get();
                response.reset();

                try (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);

                        CollectorRegistry registry = this.registryMap.get("default");

                        if ("/jvm".equals(path)) {
                            registry = this.registryMap.get("jvm");
                        }

                        List<String> list = new ArrayList<>();
                        try {
                            Field field = registry.getClass().getDeclaredField("namesToCollectors");
                            field.setAccessible(true);
                            Map<String, Collector> namesToCollectors = (Map<String, Collector>) field.get(registry);
                            list = namesToCollectors.keySet().stream()
                                    .filter(it -> !it.endsWith("created"))
                                    .filter(it -> !it.startsWith("nacos_"))
                                    .collect(Collectors.toList());
                        } catch (NoSuchFieldException e) {
                            e.printStackTrace();
                        } catch (IllegalAccessException e) {
                            e.printStackTrace();
                        }

                        TextFormat.writeFormat(contentType, osw,
                                registry.filteredMetricFamilySamples(new HashSet<>(list)));
                    }
                }

                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 {
                    t.getResponseHeaders().set("Content-Length",
                            String.valueOf(response.size()));
                    t.sendResponseHeaders(HttpURLConnection.HTTP_OK, response.size());
                    response.writeTo(t.getResponseBody());
                }
            } catch (IOException e) {
                e.printStackTrace();
                throw e;
            } finally {
                if (null != t) {
                    t.close();
                }
            }
        }