Class KsuidFactory

java.lang.Object
uno.xifan.id.generator.ksuid.KsuidFactory

public final class KsuidFactory extends Object
A class that actually generates KSUIDs.

This class is used by KsuidCreator.

You can use this class if you need to use a specific random generator strategy. However, most people just need KsuidCreator.

Instances of this class can behave in one of three ways: non-monotonic (Segment's), monotonic and sub-second.

If the factory is monotonic, the random component is incremented by 1 If more than one KSUID is generated within the same second.

If the factory is sub-second, the time precision is detected at runtime.

The maximum KSUID that can be generated per second is 2^128.

  • Constructor Details

    • KsuidFactory

      public KsuidFactory()
      Default constructor.
  • Method Details

    • newInstance

      public static KsuidFactory newInstance()
      Returns a new Segment's KSUID factory.

      It is equivalent to new KsuidFactory().

      Returns:
      KsuidFactory
    • newInstance

      public static KsuidFactory newInstance(Random random)
      Returns a new Segment's KSUID factory.
      Parameters:
      random - a Random generator
      Returns:
      KsuidFactory
    • newInstance

      public static KsuidFactory newInstance(LongSupplier randomFunction)
      Returns a new Segment's KSUID factory.
      Parameters:
      randomFunction - a random function that returns a long value
      Returns:
      KsuidFactory
    • newInstance

      public static KsuidFactory newInstance(IntFunction<byte[]> randomFunction)
      Returns a new Segment's KSUID factory.
      Parameters:
      randomFunction - a random function that returns a byte array
      Returns:
      KsuidFactory
    • newSubsecondInstance

      public static KsuidFactory newSubsecondInstance()
      Returns a new Sub-second KSUID factory.
      Returns:
      KsuidFactory
    • newSubsecondInstance

      public static KsuidFactory newSubsecondInstance(Random random)
      Returns a new Sub-second KSUID factory.
      Parameters:
      random - a Random generator
      Returns:
      KsuidFactory
    • newSubsecondInstance

      public static KsuidFactory newSubsecondInstance(LongSupplier randomFunction)
      Returns a new Sub-second KSUID factory.
      Parameters:
      randomFunction - a random function that returns a long value
      Returns:
      KsuidFactory
    • newSubsecondInstance

      public static KsuidFactory newSubsecondInstance(IntFunction<byte[]> randomFunction)
      Returns a new Sub-second KSUID factory.
      Parameters:
      randomFunction - a random function that returns a byte array
      Returns:
      KsuidFactory
    • newSubsecondInstance

      public static KsuidFactory newSubsecondInstance(Random random, Supplier<Instant> instantFunction)
      Returns a new Sub-second KSUID factory.
      Parameters:
      random - a Random generator
      instantFunction - an Instant supplier
      Returns:
      KsuidFactory
    • newSubsecondInstance

      public static KsuidFactory newSubsecondInstance(LongSupplier randomFunction, Supplier<Instant> instantFunction)
      Returns a new Sub-second KSUID factory.
      Parameters:
      randomFunction - a random function that returns a long value
      instantFunction - an Instant supplier
      Returns:
      KsuidFactory
    • newSubsecondInstance

      public static KsuidFactory newSubsecondInstance(IntFunction<byte[]> randomFunction, Supplier<Instant> instantFunction)
      Returns a new Sub-second KSUID factory.
      Parameters:
      randomFunction - a random function that returns a byte array
      instantFunction - a custom clock instance for tests
      Returns:
      KsuidFactory
    • newMonotonicInstance

      public static KsuidFactory newMonotonicInstance()
      Returns a new Monotonic KSUID factory.
      Returns:
      KsuidFactory
    • newMonotonicInstance

      public static KsuidFactory newMonotonicInstance(Random random)
      Returns a new Monotonic KSUID factory.
      Parameters:
      random - a Random generator
      Returns:
      KsuidFactory
    • newMonotonicInstance

      public static KsuidFactory newMonotonicInstance(LongSupplier randomFunction)
      Returns a new Monotonic KSUID factory.
      Parameters:
      randomFunction - a random function that returns a long value
      Returns:
      KsuidFactory
    • newMonotonicInstance

      public static KsuidFactory newMonotonicInstance(IntFunction<byte[]> randomFunction)
      Returns a new Monotonic KSUID factory.
      Parameters:
      randomFunction - a random function that returns a byte array
      Returns:
      KsuidFactory
    • newMonotonicInstance

      public static KsuidFactory newMonotonicInstance(Random random, Supplier<Instant> instantFunction)
      Returns a new Monotonic KSUID factory.
      Parameters:
      random - a Random generator
      instantFunction - an Instant supplier
      Returns:
      KsuidFactory
    • newMonotonicInstance

      public static KsuidFactory newMonotonicInstance(LongSupplier randomFunction, Supplier<Instant> instantFunction)
      Returns a new Monotonic KSUID factory.
      Parameters:
      randomFunction - a random function that returns a long value
      instantFunction - an Instant supplier
      Returns:
      KsuidFactory
    • newMonotonicInstance

      public static KsuidFactory newMonotonicInstance(IntFunction<byte[]> randomFunction, Supplier<Instant> instantFunction)
      Returns a new Monotonic KSUID factory.
      Parameters:
      randomFunction - a random function that returns a byte array
      instantFunction - an Instant supplier
      Returns:
      KsuidFactory
    • create

      public Ksuid create()
      Create a KSUID.
      Returns:
      a KSUID
    • create

      public Ksuid create(Instant instant)
      Create a KSUID with a given instant.
      Parameters:
      instant - an instant
      Returns:
      a KSUID