| 212 | } |
| 213 | |
| 214 | uuid_t uuid_t::random() |
| 215 | { |
| 216 | uuid_t result; |
| 217 | #if defined(unix) || defined(__unix) || defined(__unix__) || defined(__APPLE__) |
| 218 | ::uuid_t uuid; |
| 219 | uuid_generate_random(uuid); |
| 220 | result._data[0] = uuid[0]; |
| 221 | result._data[1] = uuid[1]; |
| 222 | result._data[2] = uuid[2]; |
| 223 | result._data[3] = uuid[3]; |
| 224 | result._data[4] = uuid[4]; |
| 225 | result._data[5] = uuid[5]; |
| 226 | result._data[6] = uuid[6]; |
| 227 | result._data[7] = uuid[7]; |
| 228 | result._data[8] = uuid[8]; |
| 229 | result._data[9] = uuid[9]; |
| 230 | result._data[10] = uuid[10]; |
| 231 | result._data[11] = uuid[11]; |
| 232 | result._data[12] = uuid[12]; |
| 233 | result._data[13] = uuid[13]; |
| 234 | result._data[14] = uuid[14]; |
| 235 | result._data[15] = uuid[15]; |
| 236 | #elif defined(_WIN32) || defined(_WIN64) |
| 237 | ::UUID uuid; |
| 238 | if (UuidCreate(&uuid) != RPC_S_OK) |
| 239 | throw std::runtime_error("Cannot generate random UUID!"); |
| 240 | |
| 241 | result._data[0] = (uuid.Data1 >> 24) & 0xFF; |
| 242 | result._data[1] = (uuid.Data1 >> 16) & 0xFF; |
| 243 | result._data[2] = (uuid.Data1 >> 8) & 0xFF; |
| 244 | result._data[3] = (uuid.Data1 >> 0) & 0xFF; |
| 245 | result._data[4] = (uuid.Data2 >> 8) & 0xFF; |
| 246 | result._data[5] = (uuid.Data2 >> 0) & 0xFF; |
| 247 | |
| 248 | result._data[6] = (uuid.Data3 >> 8) & 0xFF; |
| 249 | result._data[7] = (uuid.Data3 >> 0) & 0xFF; |
| 250 | |
| 251 | result._data[8] = uuid.Data4[0]; |
| 252 | result._data[9] = uuid.Data4[1]; |
| 253 | |
| 254 | result._data[10] = uuid.Data4[2]; |
| 255 | result._data[11] = uuid.Data4[3]; |
| 256 | result._data[12] = uuid.Data4[4]; |
| 257 | result._data[13] = uuid.Data4[5]; |
| 258 | result._data[14] = uuid.Data4[6]; |
| 259 | result._data[15] = uuid.Data4[7]; |
| 260 | #endif |
| 261 | return result; |
| 262 | } |
| 263 | |
| 264 | #if defined(LOGGING_PROTOCOL) |
| 265 | CppLogging::Record& operator<<(CppLogging::Record& record, const uuid_t& uuid) |
nothing calls this directly
no outgoing calls
no test coverage detected