From b2eb84f8ca2fc2b8a2af6cd2c54c0abc4535cfc4 Mon Sep 17 00:00:00 2001 From: Martin Sustrik Date: Fri, 29 Apr 2011 07:19:22 +0200 Subject: Substantial simplification of uuid_t The string format of UUID is not used in 0MQ. Further on, it turns out that UUIDs have fixed microarchitecture-agnostic binary layout (see RFC4122). Thus, the conversion to string and back to binary can be avoided. Signed-off-by: Martin Sustrik --- src/uuid.hpp | 84 +++--------------------------------------------------------- 1 file changed, 3 insertions(+), 81 deletions(-) (limited to 'src/uuid.hpp') diff --git a/src/uuid.hpp b/src/uuid.hpp index 5eab6c8..c338208 100644 --- a/src/uuid.hpp +++ b/src/uuid.hpp @@ -21,90 +21,12 @@ #ifndef __ZMQ_UUID_HPP_INCLUDED__ #define __ZMQ_UUID_HPP_INCLUDED__ -#include "platform.hpp" -#include "stdint.hpp" - -#if defined ZMQ_HAVE_FREEBSD || defined ZMQ_HAVE_NETBSD -#include -#elif defined ZMQ_HAVE_LINUX || defined ZMQ_HAVE_SOLARIS ||\ - defined ZMQ_HAVE_OSX || defined ZMQ_HAVE_CYGWIN -#include -#elif defined ZMQ_HAVE_WINDOWS -#include "windows.hpp" -#include -#elif defined ZMQ_HAVE_OPENVMS -typedef struct -{ - unsigned long data0; - unsigned short data1; - unsigned short data2; - unsigned char data3 [8]; -} uuid_t; -#endif - namespace zmq { - // This class provides RFC 4122 (a Universally Unique IDentifier) - // implementation. - - class uuid_t - { - public: - - uuid_t (); - ~uuid_t (); - - // The length of textual representation of UUID. - enum { uuid_string_len = 36 }; - - // Returns a pointer to buffer containing the textual - // representation of the UUID. The callee is reponsible to - // free the allocated memory. - const char *to_string (); - - // The length of binary representation of UUID. - enum { uuid_blob_len = 16 }; - - const unsigned char *to_blob (); - - private: - - // Converts one byte from hexa representation to binary. - unsigned char convert_byte (const char *hexa_); - - // Converts string representation of UUID into standardised BLOB. - // The function is endianness agnostic. - void create_blob (); - -#if defined ZMQ_HAVE_WINDOWS -#ifdef ZMQ_HAVE_MINGW32 - typedef unsigned char* RPC_CSTR; -#endif - ::UUID uuid; - RPC_CSTR string_buf; -#elif defined ZMQ_HAVE_FREEBSD || defined ZMQ_HAVE_NETBSD - ::uuid_t uuid; - char *string_buf; -#elif defined ZMQ_HAVE_LINUX || defined ZMQ_HAVE_SOLARIS ||\ - defined ZMQ_HAVE_OSX || defined ZMQ_HAVE_CYGWIN ||\ - defined ZMQ_HAVE_OPENVMS - ::uuid_t uuid; - char string_buf [uuid_string_len + 1]; -#else - // RFC 4122 UUID's fields - uint32_t time_low; - uint16_t time_mid; - uint16_t time_hi_and_version; - uint8_t clock_seq_hi_and_reserved; - uint8_t clock_seq_low; - uint8_t node [6]; - - char string_buf [uuid_string_len + 1]; -#endif - - unsigned char blob_buf [uuid_blob_len]; - }; + // This function provides RFC 4122 (a Universally Unique IDentifier) + // implementation. The resulting UUID will be 16 bytes long. + void generate_uuid (void *buf_); } -- cgit v1.2.3