ACE_Utils::UUID_Generator Class Reference

#include <UUID.h>

Collaboration diagram for ACE_Utils::UUID_Generator:

Collaboration graph
[legend]

List of all members.

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)
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)

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.


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 ( void   ) 

Default constructor.

ACE_Utils::UUID_Generator::~UUID_Generator ( void   ) 

Destructor.


Member Function Documentation

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

Deprecated:
This method may go away in some future release.

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.


Member Data Documentation

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.


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

Generated on Mon Jul 13 16:14:51 2009 for ACE by  doxygen 1.5.8