ACE_Utils::UUID_Generator Class Reference

#include <UUID.h>

Collaboration diagram for ACE_Utils::UUID_Generator:

Collaboration graph
[legend]

List of all members.

Public Types

enum  { ACE_UUID_CLOCK_SEQ_MASK = 0x3FFF }
typedef ACE_UINT64 UUID_Time

Public Member Functions

 UUID_Generator ()
 ~UUID_Generator ()
void init (void)
void generate_UUID (UUID &, ACE_UINT16 version=0x0001, u_char variant=0x80)
UUIDgenerate_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 &timestamp)
void get_timestamp_and_clocksequence (UUID_Time &timestamp, ACE_UINT16 &clockSequence)
void get_systemtime (UUID_Time &timeNow)
 the Christian calendar).

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_

Classes

struct  UUID_State


Member Typedef Documentation

Type to represent UTC as a count of 100 nanosecond intervals since 00:00:00.00, 15 October 1582.


Member Enumeration Documentation

anonymous enum

Enumerator:
ACE_UUID_CLOCK_SEQ_MASK 


Constructor & Destructor Documentation

ACE_Utils::UUID_Generator::UUID_Generator (  ) 

ACE_Utils::UUID_Generator::~UUID_Generator (  ) 


Member Function Documentation

void ACE_Utils::UUID_Generator::init ( void   ) 

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

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

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.

void ACE_Utils::UUID_Generator::lock ( ACE_SYNCH_MUTEX *  lock,
bool  release_lock 
)

Set a new locking strategy and return the old one.

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::get_systemtime ( UUID_Time timestamp  )  [private]

the Christian calendar).

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

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.


Member Data Documentation

The system time when that last uuid was generated.

The UUID generator persistent state.

ACE_SYNCH_MUTEX* ACE_Utils::UUID_Generator::lock_ [private]


The documentation for this class was generated from the following files:

Generated on Wed Apr 23 02:44:14 2008 for ACE by  doxygen 1.5.5