Enum DevRandomSeedGenerator
- java.lang.Object
-
- java.lang.Enum<DevRandomSeedGenerator>
-
- io.github.pr0methean.betterrandom.seed.DevRandomSeedGenerator
-
- All Implemented Interfaces:
SeedGenerator,Serializable,Comparable<DevRandomSeedGenerator>
public enum DevRandomSeedGenerator extends Enum<DevRandomSeedGenerator> implements SeedGenerator
RNG seed strategy that gets data from/dev/randomon systems that provide it (e.g. Solaris/Linux). If/dev/randomdoes not exist or is not accessible, aSeedExceptionis thrown. If it didn't exist during a previous call to this method or togenerateSeed(int), then for performance reasons, we assume for the rest of the JVM's lifespan that it still doesn't exist.- Author:
- Daniel Dyer
-
-
Enum Constant Summary
Enum Constants Enum Constant Description DEV_RANDOM_SEED_GENERATORSingleton instance.
-
Field Summary
-
Fields inherited from interface io.github.pr0methean.betterrandom.seed.SeedGenerator
EMPTY_SEED
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidgenerateSeed(byte[] randomSeed)Generates a seed value for a random number generator in an existing array.byte[]generateSeed(int length)Generates and returns a seed value for a random number generator as a new array.booleanisWorthTrying()Returns true if we cannot determine quickly (i.e.StringtoString()Returns "/dev/random".static DevRandomSeedGeneratorvalueOf(String name)Returns the enum constant of this type with the specified name.static DevRandomSeedGenerator[]values()Returns an array containing the constants of this enum type, in the order they are declared.
-
-
-
Enum Constant Detail
-
DEV_RANDOM_SEED_GENERATOR
public static final DevRandomSeedGenerator DEV_RANDOM_SEED_GENERATOR
Singleton instance.
-
-
Method Detail
-
values
public static DevRandomSeedGenerator[] values()
Returns an array containing the constants of this enum type, in the order they are declared. This method may be used to iterate over the constants as follows:for (DevRandomSeedGenerator c : DevRandomSeedGenerator.values()) System.out.println(c);
- Returns:
- an array containing the constants of this enum type, in the order they are declared
-
valueOf
public static DevRandomSeedGenerator valueOf(String name)
Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.)- Parameters:
name- the name of the enum constant to be returned.- Returns:
- the enum constant with the specified name
- Throws:
IllegalArgumentException- if this enum type has no constant with the specified nameNullPointerException- if the argument is null
-
generateSeed
public void generateSeed(byte[] randomSeed) throws SeedExceptionDescription copied from interface:SeedGeneratorGenerates a seed value for a random number generator in an existing array.- Specified by:
generateSeedin interfaceSeedGenerator- Parameters:
randomSeed- The array that is to be populated with the seed.- Throws:
SeedException- if /dev/random does not exist or is not accessible.
-
isWorthTrying
public boolean isWorthTrying()
Returns true if we cannot determine quickly (i.e. without I/O calls) that this SeedGenerator would throw aSeedExceptionifgenerateSeed(int)orgenerateSeed(byte[])were being called right now.- Specified by:
isWorthTryingin interfaceSeedGenerator- Returns:
- true if this SeedGenerator will get as far as an I/O call or other slow operation in attempting to generate a seed immediately.
-
toString
public String toString()
Returns "/dev/random".- Overrides:
toStringin classEnum<DevRandomSeedGenerator>
-
generateSeed
public byte[] generateSeed(int length) throws SeedExceptionGenerates and returns a seed value for a random number generator as a new array.- Specified by:
generateSeedin interfaceSeedGenerator- Parameters:
length- The length of the seed to generate (in bytes).- Returns:
- A byte array containing the seed data.
- Throws:
SeedException- If a seed cannot be generated for any reason.
-
-