Package icu.congee.id.generator.ksuid
Class KsuidFactory
java.lang.Object
icu.congee.id.generator.ksuid.KsuidFactory
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 Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptioncreate()Create a KSUID.Create a KSUID with a given instant.static KsuidFactoryReturns a new Segment's KSUID factory.static KsuidFactorynewInstance(IntFunction<byte[]> randomFunction) Returns a new Segment's KSUID factory.static KsuidFactorynewInstance(LongSupplier randomFunction) Returns a new Segment's KSUID factory.static KsuidFactorynewInstance(Random random) Returns a new Segment's KSUID factory.static KsuidFactoryReturns a new Monotonic KSUID factory.static KsuidFactorynewMonotonicInstance(IntFunction<byte[]> randomFunction) Returns a new Monotonic KSUID factory.static KsuidFactorynewMonotonicInstance(IntFunction<byte[]> randomFunction, Supplier<Instant> instantFunction) Returns a new Monotonic KSUID factory.static KsuidFactorynewMonotonicInstance(LongSupplier randomFunction) Returns a new Monotonic KSUID factory.static KsuidFactorynewMonotonicInstance(LongSupplier randomFunction, Supplier<Instant> instantFunction) Returns a new Monotonic KSUID factory.static KsuidFactorynewMonotonicInstance(Random random) Returns a new Monotonic KSUID factory.static KsuidFactorynewMonotonicInstance(Random random, Supplier<Instant> instantFunction) Returns a new Monotonic KSUID factory.static KsuidFactoryReturns a new Sub-second KSUID factory.static KsuidFactorynewSubsecondInstance(IntFunction<byte[]> randomFunction) Returns a new Sub-second KSUID factory.static KsuidFactorynewSubsecondInstance(IntFunction<byte[]> randomFunction, Supplier<Instant> instantFunction) Returns a new Sub-second KSUID factory.static KsuidFactorynewSubsecondInstance(LongSupplier randomFunction) Returns a new Sub-second KSUID factory.static KsuidFactorynewSubsecondInstance(LongSupplier randomFunction, Supplier<Instant> instantFunction) Returns a new Sub-second KSUID factory.static KsuidFactorynewSubsecondInstance(Random random) Returns a new Sub-second KSUID factory.static KsuidFactorynewSubsecondInstance(Random random, Supplier<Instant> instantFunction) Returns a new Sub-second KSUID factory.
-
Constructor Details
-
KsuidFactory
public KsuidFactory()Default constructor.
-
-
Method Details
-
newInstance
Returns a new Segment's KSUID factory.It is equivalent to
new KsuidFactory().- Returns:
KsuidFactory
-
newInstance
Returns a new Segment's KSUID factory.- Parameters:
random- aRandomgenerator- Returns:
KsuidFactory
-
newInstance
Returns a new Segment's KSUID factory.- Parameters:
randomFunction- a random function that returns a long value- Returns:
KsuidFactory
-
newInstance
Returns a new Segment's KSUID factory.- Parameters:
randomFunction- a random function that returns a byte array- Returns:
KsuidFactory
-
newSubsecondInstance
Returns a new Sub-second KSUID factory.- Returns:
KsuidFactory
-
newSubsecondInstance
Returns a new Sub-second KSUID factory.- Parameters:
random- aRandomgenerator- Returns:
KsuidFactory
-
newSubsecondInstance
Returns a new Sub-second KSUID factory.- Parameters:
randomFunction- a random function that returns a long value- Returns:
KsuidFactory
-
newSubsecondInstance
Returns a new Sub-second KSUID factory.- Parameters:
randomFunction- a random function that returns a byte array- Returns:
KsuidFactory
-
newSubsecondInstance
Returns a new Sub-second KSUID factory.- Parameters:
random- aRandomgeneratorinstantFunction- anInstantsupplier- 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 valueinstantFunction- anInstantsupplier- 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 arrayinstantFunction- a custom clock instance for tests- Returns:
KsuidFactory
-
newMonotonicInstance
Returns a new Monotonic KSUID factory.- Returns:
KsuidFactory
-
newMonotonicInstance
Returns a new Monotonic KSUID factory.- Parameters:
random- aRandomgenerator- Returns:
KsuidFactory
-
newMonotonicInstance
Returns a new Monotonic KSUID factory.- Parameters:
randomFunction- a random function that returns a long value- Returns:
KsuidFactory
-
newMonotonicInstance
Returns a new Monotonic KSUID factory.- Parameters:
randomFunction- a random function that returns a byte array- Returns:
KsuidFactory
-
newMonotonicInstance
Returns a new Monotonic KSUID factory.- Parameters:
random- aRandomgeneratorinstantFunction- anInstantsupplier- 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 valueinstantFunction- anInstantsupplier- 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 arrayinstantFunction- anInstantsupplier- Returns:
KsuidFactory
-
create
Create a KSUID.- Returns:
- a KSUID
-
create
Create a KSUID with a given instant.- Parameters:
instant- an instant- Returns:
- a KSUID
-