From b0952047f0a52884227676bfcfd0ddb45002f6c0 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Fri, 25 Oct 2024 13:09:24 +0200 Subject: [PATCH] include/uuid: un-inline methods to reduce header dependencies Signed-off-by: Max Kellermann --- src/CMakeLists.txt | 1 + src/crimson/CMakeLists.txt | 1 + src/include/uuid.cc | 31 ++++++++++++++++++++++++++ src/include/uuid.h | 30 +++++-------------------- src/tools/ceph-dencoder/CMakeLists.txt | 2 -- 5 files changed, 39 insertions(+), 26 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index b4a467ef129..edc60ddcc7f 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -502,6 +502,7 @@ set(libcommon_files xxHash/xxhash.c include/invoke_date.cc include/utime.cc + include/uuid.cc common/error_code.cc common/tracer.cc log/Log.cc diff --git a/src/crimson/CMakeLists.txt b/src/crimson/CMakeLists.txt index 46c6aa54e5c..df0daaf3df8 100644 --- a/src/crimson/CMakeLists.txt +++ b/src/crimson/CMakeLists.txt @@ -98,6 +98,7 @@ add_library(crimson-common STATIC ${PROJECT_SOURCE_DIR}/src/global/global_context.cc ${PROJECT_SOURCE_DIR}/src/global/pidfile.cc ${PROJECT_SOURCE_DIR}/src/include/utime.cc + ${PROJECT_SOURCE_DIR}/src/include/uuid.cc ${PROJECT_SOURCE_DIR}/src/librbd/Features.cc ${PROJECT_SOURCE_DIR}/src/librbd/io/IoOperations.cc ${PROJECT_SOURCE_DIR}/src/mgr/ServiceMap.cc diff --git a/src/include/uuid.cc b/src/include/uuid.cc index 106fc1db586..86fd49e277d 100644 --- a/src/include/uuid.cc +++ b/src/include/uuid.cc @@ -13,8 +13,39 @@ */ #include "uuid.h" +#include "random.h" #include "common/Formatter.h" +#include +#include +#include + +#include + +void uuid_d::generate_random() { + random_device_t rng; + boost::uuids::basic_random_generator gen(rng); + uuid = gen(); +} + +bool uuid_d::parse(const char *s) { + try { + boost::uuids::string_generator gen; + uuid = gen(s); + return true; + } catch (std::runtime_error& e) { + return false; + } +} + +void uuid_d::print(char *s) const { + memcpy(s, boost::uuids::to_string(uuid).c_str(), 37); +} + +std::string uuid_d::to_string() const { + return boost::uuids::to_string(uuid); +} + void uuid_d::dump(ceph::Formatter *f) const { f->dump_stream("uuid") << to_string(); diff --git a/src/include/uuid.h b/src/include/uuid.h index 2544df97269..37da5a06241 100644 --- a/src/include/uuid.h +++ b/src/include/uuid.h @@ -7,16 +7,14 @@ */ #include "encoding.h" -#include "random.h" #include -#include #include -#include -#include +#include #include +#include // for FMT_VERSION #if FMT_VERSION >= 90000 #include #endif @@ -37,28 +35,12 @@ struct uuid_d { return uuid.is_nil(); } - void generate_random() { - random_device_t rng; - boost::uuids::basic_random_generator gen(rng); - uuid = gen(); - } + void generate_random(); - bool parse(const char *s) { - try { - boost::uuids::string_generator gen; - uuid = gen(s); - return true; - } catch (std::runtime_error& e) { - return false; - } - } - void print(char *s) const { - memcpy(s, boost::uuids::to_string(uuid).c_str(), 37); - } + bool parse(const char *s); + void print(char *s) const; - std::string to_string() const { - return boost::uuids::to_string(uuid); - } + std::string to_string() const; const char *bytes() const { #if BOOST_VERSION >= 108600 diff --git a/src/tools/ceph-dencoder/CMakeLists.txt b/src/tools/ceph-dencoder/CMakeLists.txt index 1b7bbbf3dbc..32f7f11d63b 100644 --- a/src/tools/ceph-dencoder/CMakeLists.txt +++ b/src/tools/ceph-dencoder/CMakeLists.txt @@ -10,7 +10,6 @@ endif() set(dencoder_srcs ceph_dencoder.cc - ../../include/uuid.cc $) add_executable(ceph-dencoder ${dencoder_srcs}) set_target_properties(ceph-dencoder PROPERTIES @@ -37,7 +36,6 @@ function(add_denc_mod name) endfunction() add_denc_mod(denc-mod-common - ../../include/uuid.cc common_types.cc) target_link_libraries(denc-mod-common ceph-common -- 2.39.5