Poco::UUID と Poco::UUIDGenerator を紹介します。
UUIDTest.cpp
・Poco::UUID の static method の結果を表示。
・Poco::UUIDGenerator で、各種の方法で create した結果を表示。
2回ループをまわして、生成結果をチェック。
・UUID と共に、version も表示:
0x01: UUID_TIME_BASED
0x02: UUID_DCE_UID
0x03: UUID_NAME_BASED
0x04: UUID_RANDOM
#include <Poco/Format.h> #include <Poco/UUID.h> #include <Poco/UUIDGenerator.h> #ifndef POCO_VERSION #include <Poco/Version.h> #endif #include <string> #include "ScopedLogMessage.h" #include "PrepareConsoleLogger.h" void ShowUUID(ScopedLogMessage& msg, const Poco::UUID& uuid, const std::string& text) { msg.Message(Poco::format("%s %s [version=%d]" , text , uuid.toString() , static_cast<int>(uuid.version()))); } int main(int /*argc*/, char** /*argv*/) { PrepareConsoleLogger logger(Poco::Logger::ROOT, Poco::Message::PRIO_INFORMATION); ScopedLogMessage msg("UUIDTest ", "start", "end"); msg.Message("--- Poco::UUID static methods ---"); ShowUUID(msg, Poco::UUID::dns(), " dns() :"); #if (POCO_VERSION < 0x01040000) ShowUUID(msg, Poco::UUID::nil(), " nil() :"); #else ShowUUID(msg, Poco::UUID::null(), " null() :"); #endif ShowUUID(msg, Poco::UUID::oid(), " oid() :"); ShowUUID(msg, Poco::UUID::uri(), " uri() :"); ShowUUID(msg, Poco::UUID::x500(), " x500() :"); const int kNumGeneratorLoop = 2; const std::string kCreateFromName("test"); for(int i=0; i<kNumGeneratorLoop; ++i) { msg.Message(Poco::format("--- Poco::UUIDGenerator (%d of %d) ---", i+1, kNumGeneratorLoop)); Poco::UUID uuid; try { uuid = Poco::UUIDGenerator::defaultGenerator().create(); ShowUUID(msg, uuid, " create() :"); } catch(Poco::Exception& exc) { msg.Message(Poco::format(" create() throwed exception: %s", exc.displayText())); } ShowUUID(msg, Poco::UUIDGenerator::defaultGenerator().createOne(), " createOne() :"); ShowUUID(msg, Poco::UUIDGenerator::defaultGenerator().createRandom(), " createRandom() :"); ShowUUID(msg, Poco::UUIDGenerator::defaultGenerator().createFromName(Poco::UUID::dns(), kCreateFromName) , " createFromName(dns(), \""+kCreateFromName+"\") :"); ShowUUID(msg, Poco::UUIDGenerator::defaultGenerator().createFromName(Poco::UUID::oid(), kCreateFromName) , " createFromName(oid(), \""+kCreateFromName+"\") :"); ShowUUID(msg, Poco::UUIDGenerator::defaultGenerator().createFromName(Poco::UUID::uri(), kCreateFromName) , " createFromName(uri(), \""+kCreateFromName+"\") :"); ShowUUID(msg, Poco::UUIDGenerator::defaultGenerator().createFromName(Poco::UUID::x500(), kCreateFromName) , " createFromName(x500(), \""+kCreateFromName+"\") :"); } return 0; } |
Results of execution
・createFromName() で生成した場合は、常に同じ UUID になることに注意。
[0] UUIDTest start [0] --- Poco::UUID static methods --- [0] dns() : 6ba7b810-9dad-11d1-80b4-00c04fd430c8 [version=1] [0] nil() : 00000000-0000-0000-0000-000000000000 [version=0] [0] oid() : 6ba7b812-9dad-11d1-80b4-00c04fd430c8 [version=1] [0] uri() : 6ba7b811-9dad-11d1-80b4-00c04fd430c8 [version=1] [0] x500() : 6ba7b814-9dad-11d1-80b4-00c04fd430c8 [version=1] [0] --- Poco::UUIDGenerator (1 of 2) --- [0] create() : 7e55cbcc-6f4d-11df-9308-0016cbb0aae4 [version=1] [0] createOne() : 7e55cd5c-6f4d-11df-979e-0016cbb0aae4 [version=1] [0] createRandom() : ff8345b3-5099-4f32-9316-de57ff6e740e [version=4] [0] createFromName(dns(), "test") : 45a113ac-c7f2-30b0-90a5-a399ab912716 [version=3] [0] createFromName(oid(), "test") : 61df151d-7508-321d-ada6-27936752b809 [version=3] [0] createFromName(uri(), "test") : 1cf93550-8eb4-3c32-a229-826cf8c1be59 [version=3] [0] createFromName(x500(), "test") : d9c53a66-fde2-3d04-b5ad-dce3848df07e [version=3] [0] --- Poco::UUIDGenerator (2 of 2) --- [0] create() : 7e55d860-6f4d-11df-806d-0016cbb0aae4 [version=1] [0] createOne() : 7e55d95a-6f4d-11df-8bba-0016cbb0aae4 [version=1] [0] createRandom() : 24b89f2a-37bf-4447-962f-1aa6d9030cba [version=4] [0] createFromName(dns(), "test") : 45a113ac-c7f2-30b0-90a5-a399ab912716 [version=3] [0] createFromName(oid(), "test") : 61df151d-7508-321d-ada6-27936752b809 [version=3] [0] createFromName(uri(), "test") : 1cf93550-8eb4-3c32-a229-826cf8c1be59 [version=3] [0] createFromName(x500(), "test") : d9c53a66-fde2-3d04-b5ad-dce3848df07e [version=3] [0] UUIDTest end |
Downloads
・ここをクリックすると、makefile や VC++ プロジェクトなど一式がダウンロードできます。
(2013.05.31 updated)
・2010年6月6日からのダウンロード数:1087
Subversion
・フリーの Subversion ホスティングサービス Assemblaで、ソースコードを管理しています。
Reference
・http://pocoproject.org にある URIandUUID のプレセンテーション。(PDF)
![]() |
Copyright © 2010 Round Square Inc. All rights reserved. |
---|
0 Comments.