From 55fce39cbea2b9e167d85c5ae53703dc15921426 Mon Sep 17 00:00:00 2001 From: Peter Eisenlohr Date: Wed, 13 Oct 2021 19:09:53 +0000 Subject: [PATCH] provide access to servers local acceptor endpoints --- src/asio_server.cc | 9 +++++++++ src/asio_server.h | 2 ++ src/asio_server_http2.cc | 2 ++ src/asio_server_http2_impl.cc | 2 ++ src/asio_server_http2_impl.h | 1 + src/includes/nghttp2/asio_http2_server.h | 3 +++ 6 files changed, 19 insertions(+) diff --git a/src/asio_server.cc b/src/asio_server.cc index 74c92276..96db8a90 100644 --- a/src/asio_server.cc +++ b/src/asio_server.cc @@ -209,6 +209,15 @@ const std::vector server::ports() const { return ports; } +const std::vector server::endpoints() const { + std::vector ports; + ports.reserve(acceptors_.size()); + for (const auto &acceptor : acceptors_) { + ports.emplace_back(acceptor.local_endpoint()); + } + return ports; +} + } // namespace server } // namespace asio_http2 } // namespace nghttp2 diff --git a/src/asio_server.h b/src/asio_server.h index 1190e322..7ce7d70c 100644 --- a/src/asio_server.h +++ b/src/asio_server.h @@ -81,6 +81,8 @@ public: /// Returns a vector with all the acceptors ports in use. const std::vector ports() const; + /// Returns a vector with all the acceptors endpoints. + const std::vector endpoints() const; private: /// Initiate an asynchronous accept operation. diff --git a/src/asio_server_http2.cc b/src/asio_server_http2.cc index 02d3d197..8a13b533 100644 --- a/src/asio_server_http2.cc +++ b/src/asio_server_http2.cc @@ -92,6 +92,8 @@ http2::io_services() const { std::vector http2::ports() const { return impl_->ports(); } +std::vector http2::endpoints() const { return impl_->endpoints(); } + } // namespace server } // namespace asio_http2 diff --git a/src/asio_server_http2_impl.cc b/src/asio_server_http2_impl.cc index 00afdd65..7fd6c7dc 100644 --- a/src/asio_server_http2_impl.cc +++ b/src/asio_server_http2_impl.cc @@ -80,6 +80,8 @@ http2_impl::io_services() const { std::vector http2_impl::ports() const { return server_->ports(); } +std::vector http2_impl::endpoints() const { return server_->endpoints(); } + } // namespace server } // namespace asio_http2 diff --git a/src/asio_server_http2_impl.h b/src/asio_server_http2_impl.h index 93a6d2cc..603c527e 100644 --- a/src/asio_server_http2_impl.h +++ b/src/asio_server_http2_impl.h @@ -55,6 +55,7 @@ public: const std::vector> & io_services() const; std::vector ports() const; + std::vector endpoints() const; private: std::unique_ptr server_; diff --git a/src/includes/nghttp2/asio_http2_server.h b/src/includes/nghttp2/asio_http2_server.h index 651af690..662808f2 100644 --- a/src/includes/nghttp2/asio_http2_server.h +++ b/src/includes/nghttp2/asio_http2_server.h @@ -217,6 +217,9 @@ public: // Returns a vector with the ports in use std::vector ports() const; + // Returns a vector of the endpoints in use + std::vector endpoints() const; + private: std::unique_ptr impl_; };