From b1d033ce60f0c4de645f837266bd2d6f453b4a1f Mon Sep 17 00:00:00 2001 From: Greg Farnum Date: Thu, 25 Apr 2019 22:25:31 -0700 Subject: [PATCH] common: make uuid_d dencoder-compatible Signed-off-by: Greg Farnum --- src/include/uuid.cc | 40 ++++++++++++++++++++++++++ src/include/uuid.h | 7 +++++ src/tools/ceph-dencoder/CMakeLists.txt | 1 + 3 files changed, 48 insertions(+) create mode 100644 src/include/uuid.cc diff --git a/src/include/uuid.cc b/src/include/uuid.cc new file mode 100644 index 00000000000..2d1eb196219 --- /dev/null +++ b/src/include/uuid.cc @@ -0,0 +1,40 @@ +// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- +// vim: ts=8 sw=2 smarttab +/* + * Ceph - scalable distributed file system + * + * Copyright (C) 2019 Red Hat + * + * This is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software + * Foundation. See file COPYING. + * + */ + +#include "uuid.h" +#include "common/Formatter.h" + +void uuid_d::dump(ceph::Formatter *f) const +{ + f->open_object_section("uuid_d"); + { + f->dump_stream("uuid") << to_string(); + } + f->close_section(); +} + +void uuid_d::generate_test_instances(std::list& o) +{ + // these are sourced from examples at + // https://www.boost.org/doc/libs/1_62_0/libs/uuid/uuid.html#Synopsis_generators + boost::uuids::string_generator gen; + o.push_back(new uuid_d()); + o.back()->uuid = gen("{01234567-89ab-cdef-0123-456789abcdef}"); + o.push_back(new uuid_d()); + o.back()->uuid = gen(L"01234567-89ab-cdef-0123-456789abcdef"); + o.push_back(new uuid_d()); + o.back()->uuid = gen(std::string("0123456789abcdef0123456789abcdef")); + o.push_back(new uuid_d()); + o.back()->uuid = gen(std::wstring(L"01234567-89ab-cdef-0123-456789abcdef")); +} diff --git a/src/include/uuid.h b/src/include/uuid.h index a28b90e2b79..bee66c36fa3 100644 --- a/src/include/uuid.h +++ b/src/include/uuid.h @@ -15,6 +15,10 @@ #include #include +namespace ceph { + class Formatter; +} + struct uuid_d { boost::uuids::uuid uuid; @@ -61,6 +65,9 @@ struct uuid_d { void decode(ceph::buffer::list::const_iterator& p) const { ceph::decode_raw(uuid, p); } + + void dump(ceph::Formatter *f) const; + static void generate_test_instances(std::list& o); }; WRITE_CLASS_ENCODER(uuid_d) diff --git a/src/tools/ceph-dencoder/CMakeLists.txt b/src/tools/ceph-dencoder/CMakeLists.txt index 14370d557a8..bdaf0785142 100644 --- a/src/tools/ceph-dencoder/CMakeLists.txt +++ b/src/tools/ceph-dencoder/CMakeLists.txt @@ -10,6 +10,7 @@ endif() set(dencoder_srcs ceph_dencoder.cc + ../../include/uuid.cc $) if(WITH_RADOSGW) list(APPEND dencoder_srcs -- 2.39.5