ACE  6.3.3
Classes | Public Types | Public Member Functions | Private Member Functions | Private Attributes | List of all members
ACE_Utils::UUID_Generator Class Reference

#include <UUID.h>

Collaboration diagram for ACE_Utils::UUID_Generator:
Collaboration graph
[legend]

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. More...
 
 ~UUID_Generator ()
 Destructor. More...
 
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_MUTEXlock (void)
 
void lock (ACE_SYNCH_MUTEX *lock, bool release_lock)
 Set a new locking strategy and return the old one. More...
 

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. More...
 
UUID_State uuid_state_
 The UUID generator persistent state. More...
 
ACE_SYNCH_MUTEXlock_
 
bool destroy_lock_
 
bool is_init_
 Initalization state of the generator. More...
 

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

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

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

Member Data Documentation

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
UUID_Time ACE_Utils::UUID_Generator::time_last_
private

The system time when that last uuid was generated.

UUID_State ACE_Utils::UUID_Generator::uuid_state_
private

The UUID generator persistent state.


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