diff --git a/net/cpp/include/ftl/uuid.hpp b/net/cpp/include/ftl/uuid.hpp index 4726ebd3b76897e034132de68346d2102dc776fd..e8bca170242612b0356ea9c037dc4c6d08051985 100644 --- a/net/cpp/include/ftl/uuid.hpp +++ b/net/cpp/include/ftl/uuid.hpp @@ -1,7 +1,12 @@ #ifndef _FTL_UUID_HPP_ #define _FTL_UUID_HPP_ +#ifndef WIN32 #include <uuid/uuid.h> +#else +#include <Rpc.h> +#endif + #include <memory> #include <string> #include <functional> @@ -13,25 +18,35 @@ namespace ftl { */ class UUID { public: - UUID() { uuid_generate(uuid_); }; - UUID(int u) { memset(uuid_,u,16); }; - UUID(const UUID &u) { memcpy(uuid_,u.uuid_,16); } + UUID() { +#ifdef WIN32 + ::UuidCreate(&uuid_); +#else + uuid_generate(uuid_); +#endif + }; + UUID(int u) { memset(&uuid_,u,16); }; + UUID(const UUID &u) { memcpy(&uuid_,&u.uuid_,16); } - bool operator==(const UUID &u) const { return memcmp(uuid_,u.uuid_,16) == 0; } - bool operator!=(const UUID &u) const { return memcmp(uuid_,u.uuid_,16) != 0; } + bool operator==(const UUID &u) const { return memcmp(&uuid_,&u.uuid_,16) == 0; } + bool operator!=(const UUID &u) const { return memcmp(&uuid_,&u.uuid_,16) != 0; } /** * Get a raw data string. */ - std::string str() const { return std::string((char*)uuid_,16); }; - const unsigned char *raw() const { return &uuid_[0]; } + std::string str() const { return std::string((char*)&uuid_,16); }; + const unsigned char *raw() const { return (const unsigned char*)&uuid_; } /** * Get a pretty string. */ std::string to_string() const { char b[37]; +#ifdef WIN32 + UuidToString(&uuid_, (RPC_CSTR*)b); +#else uuid_unparse(uuid_, b); +#endif return std::string(b); } @@ -39,7 +54,11 @@ namespace ftl { MSGPACK_DEFINE(uuid_); private: +#ifdef WIN32 + _GUID uuid_; +#else unsigned char uuid_[16]; +#endif }; }; diff --git a/net/cpp/test/p2p_base_unit.cpp b/net/cpp/test/p2p_base_unit.cpp index c07c5593d042aa839eec277316db1034f0e53792..656f8ddc7a4573f83f837d4289f0b0bc48763c88 100644 --- a/net/cpp/test/p2p_base_unit.cpp +++ b/net/cpp/test/p2p_base_unit.cpp @@ -5,7 +5,9 @@ #include <memory> #include <iostream> +#ifndef WIN32 #include <sys/select.h> +#endif using ftl::net::Dispatcher; using ftl::net::Protocol;