]>
git.proxmox.com Git - ceph.git/blob - ceph/src/include/uuid.h
1 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
6 * Thin C++ wrapper around libuuid.
15 #include <boost/uuid/uuid.hpp>
16 #include <boost/uuid/uuid_generators.hpp>
17 #include <boost/uuid/uuid_io.hpp>
24 boost::uuids::uuid uuid
;
27 boost::uuids::nil_generator gen
;
31 bool is_zero() const {
35 void generate_random() {
37 boost::uuids::basic_random_generator
gen(rng
);
41 bool parse(const char *s
) {
43 boost::uuids::string_generator gen
;
46 } catch (std::runtime_error
& e
) {
50 void print(char *s
) const {
51 memcpy(s
, boost::uuids::to_string(uuid
).c_str(), 37);
54 std::string
to_string() const {
55 return boost::uuids::to_string(uuid
);
58 const char *bytes() const {
59 return (const char*)uuid
.data
;
62 void encode(::ceph::buffer::list::contiguous_appender
& p
) const {
63 p
.append(reinterpret_cast<const char *>(&uuid
), sizeof(uuid
));
66 void bound_encode(size_t& p
) const {
70 void decode(::ceph::buffer::ptr::const_iterator
& p
) {
71 assert((p
.get_end() - p
.get_pos()) >= (int)sizeof(*this));
72 memcpy((char *)this, p
.get_pos_add(sizeof(*this)), sizeof(*this));
75 void dump(ceph::Formatter
*f
) const;
76 static void generate_test_instances(std::list
<uuid_d
*>& o
);
78 WRITE_CLASS_DENC_BOUNDED(uuid_d
)
80 inline std::ostream
& operator<<(std::ostream
& out
, const uuid_d
& u
) {
86 inline bool operator==(const uuid_d
& l
, const uuid_d
& r
) {
87 return l
.uuid
== r
.uuid
;
89 inline bool operator!=(const uuid_d
& l
, const uuid_d
& r
) {
90 return l
.uuid
!= r
.uuid
;
92 inline bool operator<(const uuid_d
& l
, const uuid_d
& r
) {
93 return l
.to_string() < r
.to_string();