- fix UUID generation on Android
This commit is contained in:
parent
2c2167c840
commit
caf1283f0a
|
|
@ -3,7 +3,10 @@
|
||||||
#include <random>
|
#include <random>
|
||||||
#include <span>
|
#include <span>
|
||||||
|
|
||||||
|
#if defined(TARGET_LINUX)
|
||||||
#define UUID_SYSTEM_GENERATOR
|
#define UUID_SYSTEM_GENERATOR
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "uuid.h"
|
#include "uuid.h"
|
||||||
|
|
||||||
Uuid::Uuid()
|
Uuid::Uuid()
|
||||||
|
|
@ -14,8 +17,18 @@ Uuid::Uuid()
|
||||||
Uuid Uuid::generateOne()
|
Uuid Uuid::generateOne()
|
||||||
{
|
{
|
||||||
Uuid result;
|
Uuid result;
|
||||||
|
#if defined(TARGET_LINUX)
|
||||||
auto id = uuids::uuid_system_generator{}();
|
auto id = uuids::uuid_system_generator{}();
|
||||||
|
#else
|
||||||
|
std::random_device rd;
|
||||||
|
auto seed_data = std::array<int, std::mt19937::state_size> {};
|
||||||
|
std::generate(std::begin(seed_data), std::end(seed_data), std::ref(rd));
|
||||||
|
std::seed_seq seq(std::begin(seed_data), std::end(seed_data));
|
||||||
|
std::mt19937 generator(seq);
|
||||||
|
uuids::uuid_random_generator gen{generator};
|
||||||
|
|
||||||
|
auto id = gen();
|
||||||
|
#endif
|
||||||
memcpy(result.mUuid, id.as_bytes().data(), id.as_bytes().size_bytes());
|
memcpy(result.mUuid, id.as_bytes().data(), id.as_bytes().size_bytes());
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue