aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/poco/Foundation/src/UUIDGenerator.cpp
diff options
context:
space:
mode:
authororivej <orivej@yandex-team.ru>2022-02-10 16:44:49 +0300
committerDaniil Cherednik <dcherednik@yandex-team.ru>2022-02-10 16:44:49 +0300
commit718c552901d703c502ccbefdfc3c9028d608b947 (patch)
tree46534a98bbefcd7b1f3faa5b52c138ab27db75b7 /contrib/libs/poco/Foundation/src/UUIDGenerator.cpp
parente9656aae26e0358d5378e5b63dcac5c8dbe0e4d0 (diff)
downloadydb-718c552901d703c502ccbefdfc3c9028d608b947.tar.gz
Restoring authorship annotation for <orivej@yandex-team.ru>. Commit 1 of 2.
Diffstat (limited to 'contrib/libs/poco/Foundation/src/UUIDGenerator.cpp')
-rw-r--r--contrib/libs/poco/Foundation/src/UUIDGenerator.cpp302
1 files changed, 151 insertions, 151 deletions
diff --git a/contrib/libs/poco/Foundation/src/UUIDGenerator.cpp b/contrib/libs/poco/Foundation/src/UUIDGenerator.cpp
index 1ae72005ac..3ab36426b5 100644
--- a/contrib/libs/poco/Foundation/src/UUIDGenerator.cpp
+++ b/contrib/libs/poco/Foundation/src/UUIDGenerator.cpp
@@ -1,151 +1,151 @@
-//
-// UUIDGenerator.cpp
-//
-// Library: Foundation
-// Package: UUID
-// Module: UUID
-//
-// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#include "Poco/UUIDGenerator.h"
-#include "Poco/Thread.h"
-#include "Poco/RandomStream.h"
-#include "Poco/DigestEngine.h"
-#include "Poco/MD5Engine.h"
-#include "Poco/SHA1Engine.h"
-#include "Poco/SingletonHolder.h"
-#include <cstring>
-
-
-namespace Poco {
-
-
-UUIDGenerator::UUIDGenerator(): _ticks(0), _haveNode(false)
-{
-}
-
-
-UUIDGenerator::~UUIDGenerator()
-{
-}
-
-
-UUID UUIDGenerator::create()
-{
- FastMutex::ScopedLock lock(_mutex);
-
- if (!_haveNode)
- {
- Environment::nodeId(_node);
- _haveNode = true;
- }
- Timestamp::UtcTimeVal tv = timeStamp();
- UInt32 timeLow = UInt32(tv & 0xFFFFFFFF);
- UInt16 timeMid = UInt16((tv >> 32) & 0xFFFF);
- UInt16 timeHiAndVersion = UInt16((tv >> 48) & 0x0FFF) + (UUID::UUID_TIME_BASED << 12);
- UInt16 clockSeq = (UInt16(_random.next() >> 4) & 0x3FFF) | 0x8000;
- return UUID(timeLow, timeMid, timeHiAndVersion, clockSeq, _node);
-}
-
-
-UUID UUIDGenerator::createFromName(const UUID& nsid, const std::string& name)
-{
- MD5Engine md5;
- return createFromName(nsid, name, md5);
-}
-
-
-UUID UUIDGenerator::createFromName(const UUID& nsid, const std::string& name, DigestEngine& de)
-{
- UUID::Version version = UUID::UUID_NAME_BASED;
- if (dynamic_cast<SHA1Engine*>(&de)) version = UUID::UUID_NAME_BASED_SHA1;
- return createFromName(nsid, name, de, version);
-}
-
-
-UUID UUIDGenerator::createFromName(const UUID& nsid, const std::string& name, DigestEngine& de, UUID::Version version)
-{
- poco_assert_dbg (de.digestLength() >= 16);
-
- UUID netNsid = nsid;
- netNsid.toNetwork();
- de.reset();
- de.update(&netNsid._timeLow, sizeof(netNsid._timeLow));
- de.update(&netNsid._timeMid, sizeof(netNsid._timeMid));
- de.update(&netNsid._timeHiAndVersion, sizeof(netNsid._timeHiAndVersion));
- de.update(&netNsid._clockSeq, sizeof(netNsid._clockSeq));
- de.update(&netNsid._node[0], sizeof(netNsid._node));
- de.update(name);
- char buffer[16];
- const DigestEngine::Digest& d = de.digest();
- for (int i = 0; i < 16; ++i)
- {
- buffer[i] = d[i];
- }
- return UUID(buffer, version);
-}
-
-
-UUID UUIDGenerator::createRandom()
-{
- char buffer[16];
- RandomInputStream ris;
- ris.read(buffer, sizeof(buffer));
- return UUID(buffer, UUID::UUID_RANDOM);
-}
-
-
-Timestamp::UtcTimeVal UUIDGenerator::timeStamp()
-{
- Timestamp now;
- for (;;)
- {
- if (now != _lastTime)
- {
- _lastTime = now;
- _ticks = 0;
- break;
- }
- if (_ticks < 100)
- {
- ++_ticks;
- break;
- }
- now.update();
- }
- Timestamp::UtcTimeVal tv = now.utcTime();
- return tv + _ticks;
-}
-
-
-UUID UUIDGenerator::createOne()
-{
- try
- {
- return create();
- }
- catch (Exception&)
- {
- return createRandom();
- }
-}
-
-
-namespace
-{
- static SingletonHolder<UUIDGenerator> sh;
-}
-
-
-UUIDGenerator& UUIDGenerator::defaultGenerator()
-{
- return *sh.get();
-}
-
-
-} // namespace Poco
+//
+// UUIDGenerator.cpp
+//
+// Library: Foundation
+// Package: UUID
+// Module: UUID
+//
+// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#include "Poco/UUIDGenerator.h"
+#include "Poco/Thread.h"
+#include "Poco/RandomStream.h"
+#include "Poco/DigestEngine.h"
+#include "Poco/MD5Engine.h"
+#include "Poco/SHA1Engine.h"
+#include "Poco/SingletonHolder.h"
+#include <cstring>
+
+
+namespace Poco {
+
+
+UUIDGenerator::UUIDGenerator(): _ticks(0), _haveNode(false)
+{
+}
+
+
+UUIDGenerator::~UUIDGenerator()
+{
+}
+
+
+UUID UUIDGenerator::create()
+{
+ FastMutex::ScopedLock lock(_mutex);
+
+ if (!_haveNode)
+ {
+ Environment::nodeId(_node);
+ _haveNode = true;
+ }
+ Timestamp::UtcTimeVal tv = timeStamp();
+ UInt32 timeLow = UInt32(tv & 0xFFFFFFFF);
+ UInt16 timeMid = UInt16((tv >> 32) & 0xFFFF);
+ UInt16 timeHiAndVersion = UInt16((tv >> 48) & 0x0FFF) + (UUID::UUID_TIME_BASED << 12);
+ UInt16 clockSeq = (UInt16(_random.next() >> 4) & 0x3FFF) | 0x8000;
+ return UUID(timeLow, timeMid, timeHiAndVersion, clockSeq, _node);
+}
+
+
+UUID UUIDGenerator::createFromName(const UUID& nsid, const std::string& name)
+{
+ MD5Engine md5;
+ return createFromName(nsid, name, md5);
+}
+
+
+UUID UUIDGenerator::createFromName(const UUID& nsid, const std::string& name, DigestEngine& de)
+{
+ UUID::Version version = UUID::UUID_NAME_BASED;
+ if (dynamic_cast<SHA1Engine*>(&de)) version = UUID::UUID_NAME_BASED_SHA1;
+ return createFromName(nsid, name, de, version);
+}
+
+
+UUID UUIDGenerator::createFromName(const UUID& nsid, const std::string& name, DigestEngine& de, UUID::Version version)
+{
+ poco_assert_dbg (de.digestLength() >= 16);
+
+ UUID netNsid = nsid;
+ netNsid.toNetwork();
+ de.reset();
+ de.update(&netNsid._timeLow, sizeof(netNsid._timeLow));
+ de.update(&netNsid._timeMid, sizeof(netNsid._timeMid));
+ de.update(&netNsid._timeHiAndVersion, sizeof(netNsid._timeHiAndVersion));
+ de.update(&netNsid._clockSeq, sizeof(netNsid._clockSeq));
+ de.update(&netNsid._node[0], sizeof(netNsid._node));
+ de.update(name);
+ char buffer[16];
+ const DigestEngine::Digest& d = de.digest();
+ for (int i = 0; i < 16; ++i)
+ {
+ buffer[i] = d[i];
+ }
+ return UUID(buffer, version);
+}
+
+
+UUID UUIDGenerator::createRandom()
+{
+ char buffer[16];
+ RandomInputStream ris;
+ ris.read(buffer, sizeof(buffer));
+ return UUID(buffer, UUID::UUID_RANDOM);
+}
+
+
+Timestamp::UtcTimeVal UUIDGenerator::timeStamp()
+{
+ Timestamp now;
+ for (;;)
+ {
+ if (now != _lastTime)
+ {
+ _lastTime = now;
+ _ticks = 0;
+ break;
+ }
+ if (_ticks < 100)
+ {
+ ++_ticks;
+ break;
+ }
+ now.update();
+ }
+ Timestamp::UtcTimeVal tv = now.utcTime();
+ return tv + _ticks;
+}
+
+
+UUID UUIDGenerator::createOne()
+{
+ try
+ {
+ return create();
+ }
+ catch (Exception&)
+ {
+ return createRandom();
+ }
+}
+
+
+namespace
+{
+ static SingletonHolder<UUIDGenerator> sh;
+}
+
+
+UUIDGenerator& UUIDGenerator::defaultGenerator()
+{
+ return *sh.get();
+}
+
+
+} // namespace Poco