gnu.crypto.prng
Class AsyncFortunaStandalone
java.lang.Object
gnu.crypto.prng.BasePRNGStandalone
gnu.crypto.prng.FortunaStandalone
gnu.crypto.prng.AsyncFortunaStandalone
- All Implemented Interfaces:
- IRandomStandalone, RandomEventListenerStandalone, Serializable, Cloneable, Runnable, EventListener
public class AsyncFortunaStandalone
- extends FortunaStandalone
- implements Runnable
fortuna instance that tries to avoid blocking if at all possible by using separate
filled buffer segments rather than one buffer (and blocking when that buffer's data
has been eaten)
Note that this class is not fully Thread safe!
The following methods must be synchronized externally, they are not
synced here or in super():
addRandomByte(), addRandomBytes(), nextByte(), nextBytes(), seed()
- See Also:
- Serialized Form
Fields inherited from class gnu.crypto.prng.FortunaStandalone |
generator, lastRefill, lastReseed, MIN_POOL_SIZE, NUM_POOLS, pool, pool0Count, pools, refillCount, reseedCount, SEED |
Method Summary |
protected void |
allocBuffer()
|
void |
fillBlock()
|
protected void |
rotateBuffer()
make the next available filled buffer current, scheduling any unfilled
buffers for refill, and blocking until at least one buffer is ready |
void |
run()
The refiller thread |
void |
seed(byte[] val)
the seed is only propogated once the prng is started with startup() |
void |
shutdown()
Note - methods may hang or NPE or throw IllegalStateExceptions after this |
void |
startup()
|
AsyncFortunaStandalone
public AsyncFortunaStandalone(I2PAppContext context)
startup
public void startup()
shutdown
public void shutdown()
- Note - methods may hang or NPE or throw IllegalStateExceptions after this
- Since:
- 0.8.8
seed
public void seed(byte[] val)
- the seed is only propogated once the prng is started with startup()
- Overrides:
seed
in class FortunaStandalone
allocBuffer
protected void allocBuffer()
- Overrides:
allocBuffer
in class FortunaStandalone
rotateBuffer
protected void rotateBuffer()
- make the next available filled buffer current, scheduling any unfilled
buffers for refill, and blocking until at least one buffer is ready
run
public void run()
- The refiller thread
- Specified by:
run
in interface Runnable
fillBlock
public void fillBlock()
- Overrides:
fillBlock
in class FortunaStandalone