Class UUID

java.lang.Object
org.jgroups.util.UUID
All Implemented Interfaces:
Externalizable, Serializable, Cloneable, Comparable<Address>, Address, Streamable
Direct Known Subclasses:
AdditionalDataUUID, PayloadUUID, TopologyUUID

public class UUID extends Object implements Address, Streamable, Comparable<Address>
Logical address which is unique over space and time.
Copied from java.util.UUID, but unneeded fields from the latter have been removed. UUIDs needs to have a small memory footprint.
Author:
Bela Ban
See Also:
  • Field Details

    • mostSigBits

      protected long mostSigBits
    • leastSigBits

      protected long leastSigBits
    • additional_data

      protected byte[] additional_data
    • numberGenerator

      protected static volatile SecureRandom numberGenerator
      The random number generator used by this class to create random based UUIDs
    • cache

      protected static LazyRemovalCache<Address,String> cache
      Keeps track of associations between logical addresses (UUIDs) and logical names
    • SIZE

      protected static final int SIZE
      See Also:
  • Constructor Details

    • UUID

      public UUID()
    • UUID

      public UUID(long mostSigBits, long leastSigBits)
    • UUID

      protected UUID(byte[] data)
      Private constructor which uses a byte array to construct the new UUID
  • Method Details

    • add

      public static void add(Address uuid, String logical_name)
    • add

      public static void add(Map<Address,String> map)
    • get

      public static String get(Address logical_addr)
    • getContents

      public static Map<Address,String> getContents()
      Returns a copy of the cache's contents
    • remove

      public static void remove(Address addr)
    • removeAll

      public static void removeAll(Collection<Address> mbrs)
    • retainAll

      public static void retainAll(Collection<Address> logical_addrs)
    • printCache

      public static String printCache()
    • getAdditionalData

      public final byte[] getAdditionalData()
      Deprecated.
      Will be removed in 3.0. This was only added to be backwards compatible with 2.7
      Returns the additional_data.
      Returns:
      byte[]
      Since:
      2.8
    • setAdditionalData

      public final void setAdditionalData(byte[] additional_data)
      Deprecated.
      Will be removed in 3.0. This was only added to be backwards compatible with 2.7
      Sets the additional_data.
      Parameters:
      additional_data - The additional_data to set
      Since:
      2.8
    • randomUUID

      public static UUID randomUUID()
      Static factory to retrieve a type 4 (pseudo randomly generated) UUID. The UUID is generated using a cryptographically strong pseudo random number generator.
      Returns:
      A randomly generated UUID
    • getLeastSignificantBits

      public long getLeastSignificantBits()
    • getMostSignificantBits

      public long getMostSignificantBits()
      Returns the most significant 64 bits of this UUID's 128 bit value.
      Returns:
      The most significant 64 bits of this UUID's 128 bit value
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • toStringLong

      public String toStringLong()
      Returns a String object representing this UUID.

      The UUID string representation is as described by this BNF:

       
       UUID                   = <time_low> "-" <time_mid> "-"
                                <time_high_and_version> "-"
                                <variant_and_sequence> "-"
                                <node>
       time_low               = 4*<hexOctet>
       time_mid               = 2*<hexOctet>
       time_high_and_version  = 2*<hexOctet>
       variant_and_sequence   = 2*<hexOctet>
       node                   = 6*<hexOctet>
       hexOctet               = <hexDigit><hexDigit>
       hexDigit               =
             "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"
             | "a" | "b" | "c" | "d" | "e" | "f"
             | "A" | "B" | "C" | "D" | "E" | "F"
       
      Returns:
      A string representation of this UUID
    • digits

      protected static String digits(long val, int digits)
      Returns val represented by the specified number of hex digits.
    • hashCode

      public int hashCode()
      Returns a hash code for this UUID.
      Overrides:
      hashCode in class Object
      Returns:
      A hash code value for this UUID
    • equals

      public boolean equals(Object obj)
      Compares this object to the specified object. The result is true if and only if the argument is not null, is a UUID object, has the same variant, and contains the same value, bit for bit, as this UUID.
      Overrides:
      equals in class Object
      Parameters:
      obj - The object to be compared
      Returns:
      true if the objects are the same; false otherwise
    • compareTo

      public int compareTo(Address other)
      Compares this UUID with the specified UUID.

      The first of two UUIDs is greater than the second if the most significant field in which the UUIDs differ is greater for the first UUID.

      Specified by:
      compareTo in interface Comparable<Address>
      Parameters:
      other - UUID to which this UUID is to be compared
      Returns:
      -1, 0 or 1 as this UUID is less than, equal to, or greater than val
    • writeTo

      public void writeTo(DataOutputStream out) throws IOException
      Description copied from interface: Streamable
      Write the entire state of the current object (including superclasses) to outstream. Note that the output stream must not be closed
      Specified by:
      writeTo in interface Streamable
      Throws:
      IOException
    • readFrom

      Description copied from interface: Streamable
      Read the state of the current object (including superclasses) from instream Note that the input stream must not be closed
      Specified by:
      readFrom in interface Streamable
      Throws:
      IOException
      IllegalAccessException
      InstantiationException
    • isMulticastAddress

      public boolean isMulticastAddress()
      Description copied from interface: Address
      Checks whether this is an address that represents multiple destinations; e.g., a class D address in the Internet.
      Specified by:
      isMulticastAddress in interface Address
      Returns:
      true if this is a multicast address, false if it is a unicast address
    • size

      public int size()
      Description copied from interface: Address
      Returns serialized size of this address
      Specified by:
      size in interface Address
    • clone

      public Object clone() throws CloneNotSupportedException
      Overrides:
      clone in class Object
      Throws:
      CloneNotSupportedException
    • writeExternal

      public void writeExternal(ObjectOutput out) throws IOException
      Specified by:
      writeExternal in interface Externalizable
      Throws:
      IOException
    • readExternal

      public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException
      Specified by:
      readExternal in interface Externalizable
      Throws:
      IOException
      ClassNotFoundException