org.apache.cassandra.utils

## Class UUIDGen

- java.lang.Object
- - org.apache.cassandra.utils.UUIDGen

    public class UUIDGen
    extends java.lang.Object

The goods are here: www.ietf.org/rfc/rfc4122.txt.

### Method Summary

All Methods Static Methods Concrete Methods
`static byte[]` `decompose(java.util.UUID uuid)` decomposes a uuid into raw bytes.
`static long` `getAdjustedTimestamp(java.util.UUID uuid)` Returns a milliseconds-since-epoch value for a type-1 UUID.
`static java.util.UUID` `getRandomTimeUUIDFromMicros(long whenInMicros)` Similar to `getTimeUUIDFromMicros`, but randomize (using SecureRandom) the clock and sequence.
`static java.util.UUID` `getTimeUUID()` Creates a type 1 UUID (time-based UUID).
`static java.util.UUID` `getTimeUUID(long when)` Creates a type 1 UUID (time-based UUID) with the timestamp of @param when, in milliseconds.
`static java.util.UUID` `getTimeUUID(long when, long nanos)`
`static java.util.UUID` `getTimeUUID(long when, long nanos, long clockSeqAndNode)`
`static byte[]` `getTimeUUIDBytes()` Returns a 16 byte representation of a type 1 UUID (a time-based UUID), based on the current system time.
`static byte[]` `getTimeUUIDBytes(long timeMillis, int nanos)` Converts a 100-nanoseconds precision timestamp into the 16 byte representation of a type 1 UUID (a time-based UUID).
`static java.util.UUID` `getTimeUUIDFromMicros(long whenInMicros)` Returns a version 1 UUID using the provided timestamp and the local clock and sequence.
`static java.util.UUID` `getUUID(java.nio.ByteBuffer raw)` creates a type 1 uuid from raw bytes.
`static java.util.UUID` `maxTimeUUID(long timestamp)` Returns the biggest possible type 1 UUID having the provided timestamp.
`static long` `microsTimestamp(java.util.UUID uuid)`
`static java.util.UUID` `minTimeUUID(long timestamp)` Returns the smaller possible type 1 UUID having the provided timestamp.
`static long` `unixTimestamp(java.util.UUID uuid)`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Method Detail

#### getTimeUUID

    public static java.util.UUID getTimeUUID()

Creates a type 1 UUID (time-based UUID).

Returns:
  a UUID instance

#### getTimeUUID

    public static java.util.UUID getTimeUUID(long when)

Creates a type 1 UUID (time-based UUID) with the timestamp of @param when, in milliseconds.

Returns:
  a UUID instance

#### getTimeUUIDFromMicros

    public static java.util.UUID getTimeUUIDFromMicros(long whenInMicros)

Returns a version 1 UUID using the provided timestamp and the local clock and sequence.

Note that this method is generally only safe to use if you can guarantee that the provided parameter is unique across calls (otherwise the returned UUID won't be unique accross calls).

Parameters:
  `whenInMicros` - a unix time in microseconds.
Returns:
  a new UUID `id` such that `microsTimestamp(id) == whenInMicros`. Please not that multiple calls to this method with the same value of `whenInMicros` will return the same UUID.

#### getRandomTimeUUIDFromMicros

    public static java.util.UUID getRandomTimeUUIDFromMicros(long whenInMicros)

Similar to `getTimeUUIDFromMicros`, but randomize (using SecureRandom) the clock and sequence.

If you can guarantee that the `whenInMicros` argument is unique (for this JVM instance) for every call, then you should prefer `getTimeUUIDFromMicros` which is faster. If you can't guarantee this however, this method will ensure the returned UUID are still unique (accross calls) through randomization.

Parameters:
  `whenInMicros` - a unix time in microseconds.
Returns:
  a new UUID `id` such that `microsTimestamp(id) == whenInMicros`. The UUID returned by different calls will be unique even if `whenInMicros` is not.

#### getTimeUUID

    public static java.util.UUID getTimeUUID(long when,
                                             long nanos)

#### getTimeUUID

    public static java.util.UUID getTimeUUID(long when,
                                             long nanos,
                                             long clockSeqAndNode)

#### getUUID

    public static java.util.UUID getUUID(java.nio.ByteBuffer raw)

creates a type 1 uuid from raw bytes.

#### decompose

    public static byte[] decompose(java.util.UUID uuid)

decomposes a uuid into raw bytes.

#### getTimeUUIDBytes

    public static byte[] getTimeUUIDBytes()

Returns a 16 byte representation of a type 1 UUID (a time-based UUID), based on the current system time.

Returns:
  a type 1 UUID represented as a byte[]

#### minTimeUUID

    public static java.util.UUID minTimeUUID(long timestamp)

Returns the smaller possible type 1 UUID having the provided timestamp. Warning: this method should only be used for querying as this doesn't at all guarantee the uniqueness of the resulting UUID.

#### maxTimeUUID

    public static java.util.UUID maxTimeUUID(long timestamp)

Returns the biggest possible type 1 UUID having the provided timestamp. Warning: this method should only be used for querying as this doesn't at all guarantee the uniqueness of the resulting UUID.

#### unixTimestamp

    public static long unixTimestamp(java.util.UUID uuid)

Parameters:
  `uuid` -
Returns:
  milliseconds since Unix epoch

#### microsTimestamp

    public static long microsTimestamp(java.util.UUID uuid)

Parameters:
  `uuid` -
Returns:
  microseconds since Unix epoch

#### getTimeUUIDBytes

    public static byte[] getTimeUUIDBytes(long timeMillis,
                                          int nanos)

Converts a 100-nanoseconds precision timestamp into the 16 byte representation of a type 1 UUID (a time-based UUID). To specify a 100-nanoseconds precision timestamp, one should provide a milliseconds timestamp and a number 0 <= n < 10000 such that n*100 is the number of nanoseconds within that millisecond.

Warning: This method is not guaranteed to return unique UUIDs; Multiple invocations using identical timestamps will result in identical UUIDs.

Returns:
  a type 1 UUID represented as a byte[]

#### getAdjustedTimestamp

    public static long getAdjustedTimestamp(java.util.UUID uuid)

Returns a milliseconds-since-epoch value for a type-1 UUID.

Parameters:
  `uuid` - a type-1 (time-based) UUID
Returns:
  the number of milliseconds since the unix epoch
Throws:
  `java.lang.IllegalArgumentException` - if the UUID is not version 1