diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-21 11:54:28 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-21 11:54:28 +0000 |
commit | e6918187568dbd01842d8d1d2c808ce16a894239 (patch) | |
tree | 64f88b554b444a49f656b6c656111a145cbbaa28 /src/jaegertracing/opentelemetry-cpp/examples/http/server.h | |
parent | Initial commit. (diff) | |
download | ceph-e6918187568dbd01842d8d1d2c808ce16a894239.tar.xz ceph-e6918187568dbd01842d8d1d2c808ce16a894239.zip |
Adding upstream version 18.2.2.upstream/18.2.2
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/jaegertracing/opentelemetry-cpp/examples/http/server.h')
-rw-r--r-- | src/jaegertracing/opentelemetry-cpp/examples/http/server.h | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/src/jaegertracing/opentelemetry-cpp/examples/http/server.h b/src/jaegertracing/opentelemetry-cpp/examples/http/server.h new file mode 100644 index 000000000..2b94bf3a6 --- /dev/null +++ b/src/jaegertracing/opentelemetry-cpp/examples/http/server.h @@ -0,0 +1,53 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once +#include <atomic> +#include <string> +#include "opentelemetry/ext/http/server/http_server.h" + +namespace +{ + +class HttpServer : public HTTP_SERVER_NS::HttpRequestCallback +{ + +protected: + HTTP_SERVER_NS::HttpServer server_; + std::string server_url_; + uint16_t port_; + std::atomic<bool> is_running_{false}; + +public: + HttpServer(std::string server_name = "test_server", uint16_t port = 8800) : port_(port) + { + server_.setServerName(server_name); + server_.setKeepalive(false); + } + + void AddHandler(std::string path, HTTP_SERVER_NS::HttpRequestCallback *request_handler) + { + server_.addHandler(path, *request_handler); + } + + void Start() + { + if (!is_running_.exchange(true)) + { + server_.addListeningPort(port_); + server_.start(); + } + } + + void Stop() + { + if (is_running_.exchange(false)) + { + server_.stop(); + } + } + + ~HttpServer() { Stop(); } +}; + +} // namespace
\ No newline at end of file |