#include <UUID.h>
Classes | |
struct | UUID_State |
Public Types | |
enum | { ACE_UUID_CLOCK_SEQ_MASK = 0x3FFF } |
typedef ACE_UINT64 | UUID_Time |
Public Member Functions | |
UUID_Generator (void) | |
Default constructor. | |
~UUID_Generator () | |
Destructor. | |
void | init (void) |
void | generate_UUID (UUID &, ACE_UINT16 version=0x0001, u_char variant=0x80) |
UUID * | generate_UUID (ACE_UINT16 version=0x0001, u_char variant=0x80) |
ACE_SYNCH_MUTEX * | lock (void) |
void | lock (ACE_SYNCH_MUTEX *lock, bool release_lock) |
Set a new locking strategy and return the old one. | |
Private Member Functions | |
void | get_timestamp (UUID_Time ×tamp) |
void | get_timestamp_and_clocksequence (UUID_Time ×tamp, ACE_UINT16 &clockSequence) |
void | get_systemtime (UUID_Time &timeNow) |
Private Attributes | |
UUID_Time | time_last_ |
The system time when that last uuid was generated. | |
UUID_State | uuid_state_ |
The UUID generator persistent state. | |
ACE_SYNCH_MUTEX * | lock_ |
bool | destroy_lock_ |
bool | is_init_ |
Initalization state of the generator. |
Type to represent UTC as a count of 100 nanosecond intervals since 00:00:00.00, 15 October 1582.
ACE_Utils::UUID_Generator::UUID_Generator | ( | void | ) |
Default constructor.
ACE_Utils::UUID_Generator::~UUID_Generator | ( | void | ) |
Destructor.
UUID * ACE_Utils::UUID_Generator::generate_UUID | ( | ACE_UINT16 | version = 0x0001 , |
|
u_char | variant = 0x80 | |||
) |
Format timestamp, clockseq, and nodeID into a VI UUID. For generating UUID's with thread and process ids use variant=0xc0
void ACE_Utils::UUID_Generator::generate_UUID | ( | UUID & | uuid, | |
ACE_UINT16 | version = 0x0001 , |
|||
u_char | variant = 0x80 | |||
) |
Format timestamp, clockseq, and nodeID into an UUID of the specified version and variant. For generating UUID's with thread and process ids use variant=0xc0
void ACE_Utils::UUID_Generator::get_systemtime | ( | UUID_Time & | timestamp | ) | [private] |
Obtain the system time in UTC as a count of 100 nanosecond intervals since 00:00:00.00, 15 October 1582 (the date of Gregorian reform to the Christian calendar).
ACE_Time_Value is in POSIX time, seconds since Jan 1, 1970. UUIDs use time in 100ns ticks since 15 October 1582. The difference is: 15 Oct 1582 - 1 Jan 1600: 17 days in Oct, 30 in Nov, 31 in Dec + 17 years and 4 leap days (1584, 88, 92 and 96) 1 Jan 1600 - 1 Jan 1900: 3 centuries + 73 leap days ( 25 in 17th cent. and 24 each in 18th and 19th centuries) 1 Jan 1900 - 1 Jan 1970: 70 years + 17 leap days. This adds up, in days: (17+30+31+365*17+4)+ (365*300+73)+ (365*70+17) or 122192928000000000U (0x1B21DD213814000) 100 ns ticks.
Get the time of day, convert to 100ns ticks then add the offset.
void ACE_Utils::UUID_Generator::get_timestamp | ( | UUID_Time & | timestamp | ) | [private] |
Obtain a UUID timestamp. Compensate for the fact that the time obtained from getSystem time has a resolution less than 100ns.
Obtain a new timestamp. If UUID's are being generated too quickly the clock sequence will be incremented
void ACE_Utils::UUID_Generator::get_timestamp_and_clocksequence | ( | UUID_Time & | timestamp, | |
ACE_UINT16 & | clockSequence | |||
) | [private] |
Obtain a UUID timestamp and clock sequence. Compensate for the fact that the time obtained from getSystem time has a resolution less than 100ns.
void ACE_Utils::UUID_Generator::init | ( | void | ) |
Initialize the UUID generator
void ACE_Utils::UUID_Generator::lock | ( | ACE_SYNCH_MUTEX * | lock, | |
bool | release_lock | |||
) |
Set a new locking strategy and return the old one.
ACE_SYNCH_MUTEX * ACE_Utils::UUID_Generator::lock | ( | void | ) |
The locking strategy prevents multiple generators from accessing the UUID_state at the same time. Get the locking strategy.
bool ACE_Utils::UUID_Generator::destroy_lock_ [private] |
bool ACE_Utils::UUID_Generator::is_init_ [private] |
Initalization state of the generator.
ACE_SYNCH_MUTEX* ACE_Utils::UUID_Generator::lock_ [private] |
The system time when that last uuid was generated.
The UUID generator persistent state.