diff options
author | vvvv <vvvv@yandex-team.ru> | 2022-02-10 16:46:37 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:46:37 +0300 |
commit | a693106aae8a3a3c7236a4ae953058a9611d7a92 (patch) | |
tree | 49e222ea1c5804306084bb3ae065bb702625360f /library/cpp/random_provider/random_provider.cpp | |
parent | ad94e93a059747f4fc3d7add88d1a83daf40b733 (diff) | |
download | ydb-a693106aae8a3a3c7236a4ae953058a9611d7a92.tar.gz |
Restoring authorship annotation for <vvvv@yandex-team.ru>. Commit 2 of 2.
Diffstat (limited to 'library/cpp/random_provider/random_provider.cpp')
-rw-r--r-- | library/cpp/random_provider/random_provider.cpp | 134 |
1 files changed, 67 insertions, 67 deletions
diff --git a/library/cpp/random_provider/random_provider.cpp b/library/cpp/random_provider/random_provider.cpp index 5f09d8358a..64cb48b8b7 100644 --- a/library/cpp/random_provider/random_provider.cpp +++ b/library/cpp/random_provider/random_provider.cpp @@ -1,75 +1,75 @@ -#include "random_provider.h" -#include <util/random/mersenne.h> -#include <util/random/random.h> +#include "random_provider.h" +#include <util/random/mersenne.h> +#include <util/random/random.h> #include <util/system/unaligned_mem.h> - -namespace { - void SetV4(TGUID& g) { - g.dw[1] &= 0x0fffffff; - g.dw[1] |= 0x40000000; - - g.dw[2] &= 0xffffff3f; - g.dw[2] |= 0x00000080; - } -} - -class TDefaultRandomProvider: public IRandomProvider { -public: - ui64 GenRand() noexcept override { - return RandomNumber<ui64>(); - } - - TGUID GenGuid() noexcept override { - TGUID ret; - CreateGuid(&ret); - return ret; - } - + +namespace { + void SetV4(TGUID& g) { + g.dw[1] &= 0x0fffffff; + g.dw[1] |= 0x40000000; + + g.dw[2] &= 0xffffff3f; + g.dw[2] |= 0x00000080; + } +} + +class TDefaultRandomProvider: public IRandomProvider { +public: + ui64 GenRand() noexcept override { + return RandomNumber<ui64>(); + } + + TGUID GenGuid() noexcept override { + TGUID ret; + CreateGuid(&ret); + return ret; + } + TGUID GenUuid4() noexcept override { - TGUID ret; + TGUID ret; WriteUnaligned<ui64>(ret.dw, RandomNumber<ui64>()); WriteUnaligned<ui64>(ret.dw + 2, RandomNumber<ui64>()); - SetV4(ret); - return ret; - } -}; - -class TDeterministicRandomProvider: public IRandomProvider { -public: - TDeterministicRandomProvider(ui64 seed) - : Gen(seed) - { - } - - ui64 GenRand() noexcept override { - return Gen.GenRand(); - } - - TGUID GenGuid() noexcept override { - TGUID ret; + SetV4(ret); + return ret; + } +}; + +class TDeterministicRandomProvider: public IRandomProvider { +public: + TDeterministicRandomProvider(ui64 seed) + : Gen(seed) + { + } + + ui64 GenRand() noexcept override { + return Gen.GenRand(); + } + + TGUID GenGuid() noexcept override { + TGUID ret; WriteUnaligned<ui64>(ret.dw, Gen.GenRand()); - ret.dw[2] = (ui32)Gen.GenRand(); - ret.dw[3] = ++GuidCount; - return ret; - } - + ret.dw[2] = (ui32)Gen.GenRand(); + ret.dw[3] = ++GuidCount; + return ret; + } + TGUID GenUuid4() noexcept override { - TGUID ret; + TGUID ret; WriteUnaligned<ui64>(ret.dw, Gen.GenRand()); WriteUnaligned<ui64>(ret.dw + 2, Gen.GenRand()); - SetV4(ret); - return ret; - } - -private: - TMersenne<ui64> Gen; - ui32 GuidCount = 0; -}; - -TIntrusivePtr<IRandomProvider> CreateDefaultRandomProvider() { - return TIntrusivePtr<IRandomProvider>(new TDefaultRandomProvider()); -} - -TIntrusivePtr<IRandomProvider> CreateDeterministicRandomProvider(ui64 seed) { - return TIntrusivePtr<IRandomProvider>(new TDeterministicRandomProvider(seed)); -} + SetV4(ret); + return ret; + } + +private: + TMersenne<ui64> Gen; + ui32 GuidCount = 0; +}; + +TIntrusivePtr<IRandomProvider> CreateDefaultRandomProvider() { + return TIntrusivePtr<IRandomProvider>(new TDefaultRandomProvider()); +} + +TIntrusivePtr<IRandomProvider> CreateDeterministicRandomProvider(ui64 seed) { + return TIntrusivePtr<IRandomProvider>(new TDeterministicRandomProvider(seed)); +} |