class Poco::UUID

Overview

A UUID is an identifier that is unique across both space and time, with respect to the space of all UUIDs. Moreā€¦

#include <UUID.h>

class UUID
{
public:
    // enums

    enum Version;

    // construction

    UUID();
    UUID(const UUID& uuid);
    UUID(const std::string& uuid);
    UUID(const char* uuid);

    // methods

    UUID&
    operator=(const UUID& uuid);

    void
    swap(UUID& uuid);

    void
    parse(const std::string& uuid);

    bool
    tryParse(const std::string& uuid);

    std::string
    toString() const;

    void
    copyFrom(const char* buffer);

    void
    copyTo(char* buffer) const;

    Version
    version() const;

    int
    variant() const;

    bool
    operator==(const UUID& uuid) const;

    bool
    operator!=(const UUID& uuid) const;

    bool
    operator<(const UUID& uuid) const;

    bool
    operator<=(const UUID& uuid) const;

    bool
    operator>(const UUID& uuid) const;

    bool
    operator>=(const UUID& uuid) const;

    bool
    isNull() const;

    static
    const UUID&
    null();

    static
    const UUID&
    dns();

    static
    const UUID&
    uri();

    static
    const UUID&
    oid();

    static
    const UUID&
    x500();

protected:
    // construction

    UUID(
        UInt32 timeLow,
        UInt32 timeMid,
        UInt32 timeHiAndVersion,
        UInt16 clockSeq,
        UInt8 node []
        );

    UUID(
        const char* bytes,
        Version version
        );

    // methods

    int
    compare(const UUID& uuid) const;

    void
    fromNetwork();

    void
    toNetwork();

    static
    void
    appendHex(
        std::string& str,
        UInt8 n
        );

    static
    void
    appendHex(
        std::string& str,
        UInt16 n
        );

    static
    void
    appendHex(
        std::string& str,
        UInt32 n
        );

    static
    Int16
    nibble(char hex);
};

Detailed Documentation

A UUID is an identifier that is unique across both space and time, with respect to the space of all UUIDs.

Since a UUID is a fixed size and contains a time field, it is possible for values to rollover (around A.D. 3400, depending on the specific algorithm used). A UUID can be used for multiple purposes, from tagging objects with an extremely short lifetime, to reliably identifying very persistent objects across a network.

This class implements a Universal Unique Identifier, as specified in Appendix A of the DCE 1.1 Remote Procedure Call Specification (http://www.opengroup.org/onlinepubs/9629399/), RFC 2518 (WebDAV), section 6.4.1 and the UUIDs and GUIDs internet draft by Leach/Salz from February, 1998 (http://www.ics.uci.edu/~ejw/authoring/uuid-guid/draft-leach-uuids-guids-01.txt) and also http://tools.ietf.org/html/draft-mealling-uuid-urn-05

Construction

UUID()

Creates a nil (all zero) UUID.

UUID(const UUID& uuid)

Copy constructor.

UUID(const std::string& uuid)

Parses the UUID from a string.

UUID(const char* uuid)

Parses the UUID from a string.

Methods

UUID&
operator=(const UUID& uuid)

Assignment operator.

void
swap(UUID& uuid)

Swaps the UUID with another one.

void
parse(const std::string& uuid)

Parses the UUID from its string representation.

bool
tryParse(const std::string& uuid)

Tries to interpret the given string as an UUID.

If the UUID is syntactically valid, assigns the members and returns true. Otherwise leaves the object unchanged and returns false.

std::string
toString() const

Returns a string representation of the UUID consisting of groups of hexadecimal digits separated by hyphens.

void
copyFrom(const char* buffer)

Copies the UUID (16 bytes) from a buffer or byte array.

The UUID fields are expected to be stored in network byte order. The buffer need not be aligned.

void
copyTo(char* buffer) const

Copies the UUID to the buffer.

The fields are in network byte order. The buffer need not be aligned. There must have room for at least 16 bytes.

Version
version() const

Returns the version of the UUID.

int
variant() const

Returns the variant number of the UUID :

- 0 reserved for NCS backward compatibility
- 2 the Leach-Salz variant (used by this class)
- 6 reserved, Microsoft Corporation backward compatibility
- 7 reserved for future definition
bool
isNull() const

Returns true iff the UUID is nil (in other words, consists of all zeros).

static
const UUID&
null()

Returns a null/nil UUID.

static
const UUID&
dns()

Returns the namespace identifier for the DNS namespace.

static
const UUID&
uri()

Returns the namespace identifier for the URI (former URL) namespace.

static
const UUID&
oid()

Returns the namespace identifier for the OID namespace.

static
const UUID&
x500()

Returns the namespace identifier for the X500 namespace.