TimestampConverter Module

Module Contents

typedef boost::uuids::uuid tracktable::uuid_type

A convenience typedef for uuids in tracktable

class UUIDGenerator

Serves as a common base for all generators of random uuids

With a common base, the global uuid generator may be changed to different implementations, including different random number generation mechanisms.

This class is necessary because the boost random uuid generators do not have any common hierarchy. This class provides a common hierarchy around the generate() method.

This base class also provides a basic mutex to allow threadsafe generation.

Subclassed by tracktable::BoostRandomUUIDGenerator< UniformRandomNumberGenerator >, tracktable::BoostRandomUUIDGeneratorPure

Public Types

typedef boost::shared_ptr<UUIDGenerator> pointer

A convenience typedef for a smart pointer to a generator

Public Functions

inline UUIDGenerator()

Instantiate an uninitialized UUID generator.

inline virtual ~UUIDGenerator()

Destructor for the UUID Generator.

virtual uuid_type generate_uuid() = 0

This pure virtual method provides a common method for generating uuids

Protected Functions

inline void lock_mutex()

Lock the mutex for generator.

inline void unlock_mutex()

Unlock the mutex for generator.

Private Members

pthread_mutex_t mutex

Mutexes used to ensure generate_uuid() is threadsafe

bool mutex_initialized
template<typename UniformRandomNumberGenerator = boost::random::mt19937>
class BoostRandomUUIDGenerator : public tracktable::UUIDGenerator

Wraps a boost uuid random generator to act as a RandomUUIDGenerator

The boost random number generator is templated to use various random number generation mechanisms. The default boost implementation is the mt19937 which is also the default template type of this class.

However, any random number generator suitable for the boost classes can be used with this thin wrapper template.

To create an instance of this class, use the various static create() methods that mimic the available boost random generator constructors.

Public Types

typedef boost::uuids::basic_random_generator<UniformRandomNumberGenerator> random_generator_type

Public Functions

inline virtual ~BoostRandomUUIDGenerator()

Destructor for the Boost Random UUID Generator.

inline virtual uuid_type generate_uuid()

Generate a UUID for the given generator

Returns:

The generated UUID

Public Static Functions

static inline UUIDGenerator::pointer create()

Static method to create an instance using the default uniform random number generator type

Example setting a new default uuid generator with mt19937:

::tracktable::set_automatic_uuid_generator(::tracktable::BoostRandomUUIDGenerator<boost::random::mt19937>::create());
Returns:

Pointer to the new Boost random UUID generator

static inline UUIDGenerator::pointer create(UniformRandomNumberGenerator &gen)

Static method to create an instance using a supplied uniform random number generator type

Returns:

Pointer to the new Boost random UUID generator

static inline UUIDGenerator::pointer create(UniformRandomNumberGenerator *pGen)

Static method to create an instance using a supplied uniform random number generator type

Returns:

Pointer to the new Boost random UUID generator

Private Functions

inline BoostRandomUUIDGenerator()

Instantiate a Boost random UUID generator Use BoostRandomUUIDGenerator<URNG type>::create()

inline BoostRandomUUIDGenerator(UniformRandomNumberGenerator &gen)

Instantiate a Boost random UUID generator Use BoostRandomUUIDGenerator<URNG type>::create(URNG type &)

inline BoostRandomUUIDGenerator(UniformRandomNumberGenerator *pGen)

Instantiate a Boost random UUID generator Use BoostRandomUUIDGenerator<URNG type>::create(URNG type *)

Private Members

random_generator_type *_generator
class BoostRandomUUIDGeneratorPure : public tracktable::UUIDGenerator

Wraps a boost uuid pure generator to act as a RandomUUIDGenerator

The boost uuid pure generator is a lighter weight generator with less entropy, but as stated in the boost documentation it “will satisfy the

majority of use cases.”

Public Types

typedef boost::uuids::random_generator random_generator_type

Public Functions

inline virtual ~BoostRandomUUIDGeneratorPure()

Destructor for the UUID Generator.

inline virtual uuid_type generate_uuid()

Generate a UUID for the given generator

Returns:

The generated UUID

Public Static Functions

static inline UUIDGenerator::pointer create()

Static method to create an instance using the default uniform random number generator type

Example setting a new default uuid generator:

::tracktable::set_automatic_uuid_generator(::tracktable::BoostRandomUUIDGeneratorPure::create());
Returns:

Pointer to the new pure Boost random UUID generator

Private Functions

inline BoostRandomUUIDGeneratorPure()

Instantiate a boost random uuid pure generator

Private Members

random_generator_type *_generator
UUIDGenerator::pointer tracktable::automatic_uuid_generator()

Get the current global automatic uuid generator.

A global automatic uuid generator is used to avoid the cost of continuously instantiating a new generator, which could have a significant impact

This could be used to generate uuids using the same mechanisms as the current global generator.

void tracktable::set_automatic_uuid_generator(UUIDGenerator::pointer new_automatic_generator)

Set the global automatic uuid generator

Allows the global uuid generator to be changed from the default generator to any generator implementing the generate() method of UUIDGenerator.

The default generator is a boost random uuid generator using mt19937 for random number generation.

The BoostRandomUUIDGenerator template can be used to quickly create generators employing other random number generation approaches.