26#ifndef ROUTER_SRC_MYSQL_REST_SERVICE_INCLUDE_HELPER_GENERATE_UUID_H_ 
   27#define ROUTER_SRC_MYSQL_REST_SERVICE_INCLUDE_HELPER_GENERATE_UUID_H_ 
   35using UUID = std::array<uint8_t, 16>;
 
   39  std::random_device rd;
 
   40  std::mt19937 gen(rd());
 
   41  std::uniform_int_distribution<uint32_t> dis(0, 0xFFFFFFFF);
 
   43  uint32_t *parts32 = 
reinterpret_cast<uint32_t *
>(
result.data());
 
   44  uint16_t *parts16 = 
reinterpret_cast<uint16_t *
>(
result.data());
 
   46  parts32[0] = dis(gen);
 
   48  parts16[0 + 4] = dis(gen);
 
   49  parts16[1 + 4] = (dis(gen) & 0x0FFF) | 0x4000;
 
   51  parts16[2 + 4] = (dis(gen) & 0x3FFF) | 0x8000;
 
   52  parts16[3 + 4] = dis(gen);
 
   54  parts32[3] = dis(gen);
 
   60  const uint32_t *parts32 = 
reinterpret_cast<const uint32_t *
>(uuid.data());
 
   61  const uint16_t *parts16 = 
reinterpret_cast<const uint16_t *
>(uuid.data());
 
   63  oss << 
std::hex << std::setfill(
'0') << std::setw(8) << parts32[0];
 
   65  oss << std::setw(4) << parts16[4] << 
"-" << std::setw(4) << parts16[5] << 
"-" 
   66      << std::setw(4) << parts16[6] << 
"-";
 
   67  oss << std::setw(4) << parts16[7] << std::setw(8) << parts32[3];
 
std::string hex(const Container &c)
Definition: hex.h:61
 
std::array< uint8_t, 16 > UUID
Definition: generate_uuid.h:35
 
std::string to_uuid_string(const UUID &uuid)
Definition: generate_uuid.h:59
 
UUID generate_uuid_v4()
Definition: generate_uuid.h:37
 
std::basic_ostringstream< char, std::char_traits< char >, ut::allocator< char > > ostringstream
Specialization of basic_ostringstream which uses ut::allocator.
Definition: ut0new.h:2876
 
struct result result
Definition: result.h:34