From: Otto Moerbeek Date: Fri, 31 Jan 2025 15:05:37 +0000 (+0100) Subject: Logger needs no wrapper X-Git-Tag: dnsdist-2.0.0-alpha1~95^2~14 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1639e31f7a1bbefb404cae34218b2fc47b97e11c;p=thirdparty%2Fpdns.git Logger needs no wrapper --- diff --git a/pdns/recursordist/settings/cxxsupport.cc b/pdns/recursordist/settings/cxxsupport.cc index 6ef3378bf7..ec94e9121c 100644 --- a/pdns/recursordist/settings/cxxsupport.cc +++ b/pdns/recursordist/settings/cxxsupport.cc @@ -1478,7 +1478,7 @@ template template class Wrapper<::NetmaskGroup>; template class Wrapper<::ComboAddress>; -template class Wrapper>; + //template class Wrapper>; std::unique_ptr comboaddress(::rust::Str str) { @@ -1490,28 +1490,28 @@ bool matches(const std::unique_ptr& nmg, const std::unique_ptrget().match(address->get()); } -void log(const std::unique_ptr& logger, pdns::rust::web::rec::Priority log_level, ::rust::Str msg, const ::rust::Vec& values) +void log(const std::shared_ptr& logger, pdns::rust::web::rec::Priority log_level, ::rust::Str msg, const ::rust::Vec& values) { - auto log = logger->get(); + auto log = logger; for (const auto& [key, value] : values) { log = log->withValues(std::string(key), Logging::Loggable(std::string(value))); } log->info(static_cast(log_level), std::string(msg)); } -void error(const std::unique_ptr& logger, pdns::rust::web::rec::Priority log_level, ::rust::Str error, ::rust::Str msg, const ::rust::Vec& values) +void error(const std::shared_ptr& logger, pdns::rust::web::rec::Priority log_level, ::rust::Str error, ::rust::Str msg, const ::rust::Vec& values) { - auto log = logger->get(); + auto log = logger; for (const auto& [key, value] : values) { log = log->withValues(std::string(key), Logging::Loggable(std::string(value))); } log->error(static_cast(log_level), std::string(error), std::string(msg)); } -std::unique_ptr withValue(const std::unique_ptr& logger, ::rust::Str key, ::rust::Str val) +std::shared_ptr withValue(const std::shared_ptr& logger, ::rust::Str key, ::rust::Str val) { - auto ret = logger->get()->withValues(std::string(key), Logging::Loggable(std::string(val))); - return std::make_unique(ret); + auto ret = logger->withValues(std::string(key), Logging::Loggable(std::string(val))); + return ret; } } diff --git a/pdns/recursordist/settings/rust/src/bridge.hh b/pdns/recursordist/settings/rust/src/bridge.hh index b23d74872a..4c15177313 100644 --- a/pdns/recursordist/settings/rust/src/bridge.hh +++ b/pdns/recursordist/settings/rust/src/bridge.hh @@ -26,11 +26,6 @@ #include "rust/cxx.h" #include "credentials.hh" -namespace Logr -{ -class Logger; -} - namespace pdns::rust::settings::rec { uint16_t qTypeStringToCode(::rust::Str str); @@ -40,11 +35,15 @@ void setThreadName(::rust::Str str); class NetmaskGroup; union ComboAddress; +namespace Logr +{ +class Logger; +} + namespace pdns::rust::web::rec { using CredentialsHolder = ::CredentialsHolder; -// using NetmaskGroup = ::NetmaskGroup; struct KeyValue; struct Request; struct Response; @@ -71,7 +70,7 @@ private: }; using NetmaskGroup = Wrapper<::NetmaskGroup>; using ComboAddress = Wrapper<::ComboAddress>; -using Logger = Wrapper>; +using Logger = ::Logr::Logger; void apiServer(const Request& rustRequest, Response& rustResponse); void apiDiscovery(const Request& rustRequest, Response& rustResponse); @@ -96,7 +95,7 @@ void apiServerZoneDetailPUT(const Request& rustRequest, Response& rustResponse); void apiServerZoneDetailDELETE(const Request& rustRequest, Response& rustResponse); std::unique_ptr comboaddress(::rust::Str str); bool matches(const std::unique_ptr& nmg, const std::unique_ptr& address); -std::unique_ptr withValue(const std::unique_ptr& logger, ::rust::Str key, ::rust::Str val); -void log(const std::unique_ptr& logger, Priority log_level, ::rust::Str msg, const ::rust::Vec& values); -void error(const std::unique_ptr& logger, Priority log_level, ::rust::Str err, ::rust::Str msg, const ::rust::Vec& values); +std::shared_ptr withValue(const std::shared_ptr& logger, ::rust::Str key, ::rust::Str val); +void log(const std::shared_ptr& logger, Priority log_level, ::rust::Str msg, const ::rust::Vec& values); +void error(const std::shared_ptr& logger, Priority log_level, ::rust::Str err, ::rust::Str msg, const ::rust::Vec& values); } diff --git a/pdns/recursordist/settings/rust/src/web.rs b/pdns/recursordist/settings/rust/src/web.rs index 876b5a22a9..b848166c7b 100644 --- a/pdns/recursordist/settings/rust/src/web.rs +++ b/pdns/recursordist/settings/rust/src/web.rs @@ -138,7 +138,7 @@ fn file_wrapper( } fn api_wrapper( - logger: &cxx::UniquePtr, + logger: &cxx::SharedPtr, ctx: &Context, handler: Func, request: &rustweb::Request, @@ -251,7 +251,7 @@ struct Context { password_ch: cxx::UniquePtr, api_ch: cxx::UniquePtr, acl: cxx::UniquePtr, - logger: cxx::UniquePtr, + logger: cxx::SharedPtr, loglevel: rustweb::LogLevel, } @@ -407,7 +407,7 @@ fn matcher( fn collect_options( path: &str, response: &mut rustweb::Response, - my_logger: &cxx::UniquePtr, + my_logger: &cxx::SharedPtr, ) { let mut methods = vec![]; for method in [Method::GET, Method::POST, Method::PUT, Method::DELETE] { @@ -504,7 +504,7 @@ fn log_request(loglevel: rustweb::LogLevel, request: &rustweb::Request, remote: fn log_response( loglevel: rustweb::LogLevel, - logger: &cxx::UniquePtr, + logger: &cxx::SharedPtr, response: &rustweb::Response, remote: SocketAddr, ) { @@ -871,7 +871,7 @@ pub fn serveweb( password_ch: cxx::UniquePtr, api_ch: cxx::UniquePtr, acl: cxx::UniquePtr, - logger: cxx::UniquePtr, + logger: cxx::SharedPtr, loglevel: rustweb::LogLevel, ) -> Result<(), std::io::Error> { // Context, atomically reference counted @@ -1039,7 +1039,7 @@ mod rustweb { pwch: UniquePtr, apikeych: UniquePtr, acl: UniquePtr, - logger: UniquePtr, + logger: SharedPtr, loglevel: LogLevel, ) -> Result<()>; } @@ -1054,7 +1054,7 @@ mod rustweb { uri: String, vars: Vec, parameters: Vec, - logger: &'a UniquePtr, + logger: &'a SharedPtr, } struct Response { @@ -1114,10 +1114,10 @@ mod rustweb { fn matches(self: &CredentialsHolder, str: &CxxString) -> bool; fn comboaddress(address: &str) -> UniquePtr; fn matches(nmg: &UniquePtr, address: &UniquePtr) -> bool; // match is a keyword - fn withValue(logger: &UniquePtr, key: &str, val: &str) -> UniquePtr; - fn log(logger: &UniquePtr, prio: Priority, msg: &str, values: &Vec); + fn withValue(logger: &SharedPtr, key: &str, val: &str) -> SharedPtr; + fn log(logger: &SharedPtr, prio: Priority, msg: &str, values: &Vec); fn error( - logger: &UniquePtr, + logger: &SharedPtr, prio: Priority, err: &str, msg: &str, diff --git a/pdns/recursordist/ws-recursor.cc b/pdns/recursordist/ws-recursor.cc index 2cf169283f..dbd35484c5 100644 --- a/pdns/recursordist/ws-recursor.cc +++ b/pdns/recursordist/ws-recursor.cc @@ -1022,7 +1022,7 @@ void serveRustWeb() acl.toMasks(::arg()["webserver-allow-from"]); auto aclPtr = std::make_unique(acl); - auto logPtr = std::make_unique(g_slog->withName("webserver")); + auto logPtr = g_slog->withName("webserver"); pdns::rust::web::rec::LogLevel loglevel = pdns::rust::web::rec::LogLevel::Normal; auto configLevel = ::arg()["webserver-loglevel"];