]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
Logger needs no wrapper
authorOtto Moerbeek <otto.moerbeek@open-xchange.com>
Fri, 31 Jan 2025 15:05:37 +0000 (16:05 +0100)
committerOtto Moerbeek <otto.moerbeek@open-xchange.com>
Tue, 11 Feb 2025 15:28:22 +0000 (16:28 +0100)
pdns/recursordist/settings/cxxsupport.cc
pdns/recursordist/settings/rust/src/bridge.hh
pdns/recursordist/settings/rust/src/web.rs
pdns/recursordist/ws-recursor.cc

index 6ef3378bf7473914058d276402dc581dc6f68b81..ec94e9121c8c725e524819a76047e91eed34db1e 100644 (file)
@@ -1478,7 +1478,7 @@ template <typename M>
 
 template class Wrapper<::NetmaskGroup>;
 template class Wrapper<::ComboAddress>;
-template class Wrapper<std::shared_ptr<::Logr::Logger>>;
+  //template class Wrapper<std::shared_ptr<::Logr::Logger>>;
 
 std::unique_ptr<ComboAddress> comboaddress(::rust::Str str)
 {
@@ -1490,28 +1490,28 @@ bool matches(const std::unique_ptr<NetmaskGroup>& nmg, const std::unique_ptr<Com
   return nmg->get().match(address->get());
 }
 
-void log(const std::unique_ptr<Logger>& logger, pdns::rust::web::rec::Priority log_level, ::rust::Str msg, const ::rust::Vec<KeyValue>& values)
+void log(const std::shared_ptr<Logger>& logger, pdns::rust::web::rec::Priority log_level, ::rust::Str msg, const ::rust::Vec<KeyValue>& 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<Logr::Priority>(log_level), std::string(msg));
 }
 
-void error(const std::unique_ptr<Logger>& logger, pdns::rust::web::rec::Priority log_level, ::rust::Str error, ::rust::Str msg, const ::rust::Vec<KeyValue>& values)
+void error(const std::shared_ptr<Logger>& logger, pdns::rust::web::rec::Priority log_level, ::rust::Str error, ::rust::Str msg, const ::rust::Vec<KeyValue>& 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<Logr::Priority>(log_level), std::string(error), std::string(msg));
 }
 
-std::unique_ptr<Logger> withValue(const std::unique_ptr<Logger>& logger, ::rust::Str key, ::rust::Str val)
+std::shared_ptr<Logger> withValue(const std::shared_ptr<Logger>& logger, ::rust::Str key, ::rust::Str val)
 {
-  auto ret = logger->get()->withValues(std::string(key), Logging::Loggable(std::string(val)));
-  return std::make_unique<Logger>(ret);
+  auto ret = logger->withValues(std::string(key), Logging::Loggable(std::string(val)));
+  return ret;
 }
 
 }
index b23d74872a5dc9eb69b8589b3ddeccd011fdaa40..4c15177313d48eb2c4e8965e4e3da1446b7ce731 100644 (file)
 #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<std::shared_ptr<::Logr::Logger>>;
+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> comboaddress(::rust::Str str);
 bool matches(const std::unique_ptr<NetmaskGroup>& nmg, const std::unique_ptr<ComboAddress>& address);
-std::unique_ptr<Logger> withValue(const std::unique_ptr<Logger>& logger, ::rust::Str key, ::rust::Str val);
-void log(const std::unique_ptr<Logger>& logger, Priority log_level, ::rust::Str msg, const ::rust::Vec<KeyValue>& values);
-void error(const std::unique_ptr<Logger>& logger, Priority log_level, ::rust::Str err, ::rust::Str msg, const ::rust::Vec<KeyValue>& values);
+std::shared_ptr<Logger> withValue(const std::shared_ptr<Logger>& logger, ::rust::Str key, ::rust::Str val);
+void log(const std::shared_ptr<Logger>& logger, Priority log_level, ::rust::Str msg, const ::rust::Vec<KeyValue>& values);
+void error(const std::shared_ptr<Logger>& logger, Priority log_level, ::rust::Str err, ::rust::Str msg, const ::rust::Vec<KeyValue>& values);
 }
index 876b5a22a985d802c2f82e3c8d79f2830e375d79..b848166c7b1839db3b8dcd97f8d8619996fbb3c4 100644 (file)
@@ -138,7 +138,7 @@ fn file_wrapper(
 }
 
 fn api_wrapper(
-    logger: &cxx::UniquePtr<rustweb::Logger>,
+    logger: &cxx::SharedPtr<rustweb::Logger>,
     ctx: &Context,
     handler: Func,
     request: &rustweb::Request,
@@ -251,7 +251,7 @@ struct Context {
     password_ch: cxx::UniquePtr<rustweb::CredentialsHolder>,
     api_ch: cxx::UniquePtr<rustweb::CredentialsHolder>,
     acl: cxx::UniquePtr<rustweb::NetmaskGroup>,
-    logger: cxx::UniquePtr<rustweb::Logger>,
+    logger: cxx::SharedPtr<rustweb::Logger>,
     loglevel: rustweb::LogLevel,
 }
 
@@ -407,7 +407,7 @@ fn matcher(
 fn collect_options(
     path: &str,
     response: &mut rustweb::Response,
-    my_logger: &cxx::UniquePtr<rustweb::Logger>,
+    my_logger: &cxx::SharedPtr<rustweb::Logger>,
 ) {
     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<rustweb::Logger>,
+    logger: &cxx::SharedPtr<rustweb::Logger>,
     response: &rustweb::Response,
     remote: SocketAddr,
 ) {
@@ -871,7 +871,7 @@ pub fn serveweb(
     password_ch: cxx::UniquePtr<rustweb::CredentialsHolder>,
     api_ch: cxx::UniquePtr<rustweb::CredentialsHolder>,
     acl: cxx::UniquePtr<rustweb::NetmaskGroup>,
-    logger: cxx::UniquePtr<rustweb::Logger>,
+    logger: cxx::SharedPtr<rustweb::Logger>,
     loglevel: rustweb::LogLevel,
 ) -> Result<(), std::io::Error> {
     // Context, atomically reference counted
@@ -1039,7 +1039,7 @@ mod rustweb {
             pwch: UniquePtr<CredentialsHolder>,
             apikeych: UniquePtr<CredentialsHolder>,
             acl: UniquePtr<NetmaskGroup>,
-            logger: UniquePtr<Logger>,
+            logger: SharedPtr<Logger>,
             loglevel: LogLevel,
         ) -> Result<()>;
     }
@@ -1054,7 +1054,7 @@ mod rustweb {
         uri: String,
         vars: Vec<KeyValue>,
         parameters: Vec<KeyValue>,
-        logger: &'a UniquePtr<Logger>,
+        logger: &'a SharedPtr<Logger>,
     }
 
     struct Response {
@@ -1114,10 +1114,10 @@ mod rustweb {
         fn matches(self: &CredentialsHolder, str: &CxxString) -> bool;
         fn comboaddress(address: &str) -> UniquePtr<ComboAddress>;
         fn matches(nmg: &UniquePtr<NetmaskGroup>, address: &UniquePtr<ComboAddress>) -> bool; // match is a keyword
-        fn withValue(logger: &UniquePtr<Logger>, key: &str, val: &str) -> UniquePtr<Logger>;
-        fn log(logger: &UniquePtr<Logger>, prio: Priority, msg: &str, values: &Vec<KeyValue>);
+        fn withValue(logger: &SharedPtr<Logger>, key: &str, val: &str) -> SharedPtr<Logger>;
+        fn log(logger: &SharedPtr<Logger>, prio: Priority, msg: &str, values: &Vec<KeyValue>);
         fn error(
-            logger: &UniquePtr<Logger>,
+            logger: &SharedPtr<Logger>,
             prio: Priority,
             err: &str,
             msg: &str,
index 2cf169283f7ab8b8f5a9cef5671d378d1242eef6..dbd35484c56b53a348c3b556a2c40b90f73fcd98 100644 (file)
@@ -1022,7 +1022,7 @@ void serveRustWeb()
   acl.toMasks(::arg()["webserver-allow-from"]);
   auto aclPtr = std::make_unique<pdns::rust::web::rec::NetmaskGroup>(acl);
 
-  auto logPtr = std::make_unique<pdns::rust::web::rec::Logger>(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"];