diff --git a/include/endpoint.h b/include/endpoint.h index f84021d8b..d343b145c 100644 --- a/include/endpoint.h +++ b/include/endpoint.h @@ -9,6 +9,8 @@ #include "listener.h" #include "net.h" #include "http.h" +#include +#include namespace Net { @@ -52,12 +54,18 @@ class Endpoint { return listener.isBound(); } + void setLogCallback(std::function cb){ + logCallback_ = cb; + } + Async::Promise requestLoad(const Tcp::Listener::Load& old); static Options options(); private: + std::function logCallback_; + template void serveImpl(Method method) { @@ -68,9 +76,15 @@ class Endpoint { listener.setHandler(handler_); if (listener.bind()) { - const auto& addr = listener.address(); - std::cout << "Now listening on " << "http://" + addr.host() << ":" - << addr.port() << std::endl; + if(logCallback_) + { + const auto& addr = listener.address(); + std::string out = "Now listening on http://"; + out.append(addr.host()); + out.append(":"); + out.append(std::to_string(addr.port())); + logCallback_(out); + } CALL_MEMBER_FN(listener, method)(); } #undef CALL_MEMBER_FN diff --git a/src/server/endpoint.cc b/src/server/endpoint.cc index 6e2330416..f1fb8ce51 100644 --- a/src/server/endpoint.cc +++ b/src/server/endpoint.cc @@ -36,12 +36,14 @@ Endpoint::Options::backlog(int val) { return *this; } -Endpoint::Endpoint() -{ } +Endpoint::Endpoint() { + logCallback_ = [](std::string log) { std::cout << log << std::endl; }; +} Endpoint::Endpoint(const Net::Address& addr) - : listener(addr) -{ } + : listener(addr) { + logCallback_ = [](std::string log) { std::cout << log << std::endl; }; +} void Endpoint::init(const Endpoint::Options& options) {