gnu.crypto.prng

## Class AsyncFortunaStandalone

- java.lang.Object
- - gnu.crypto.prng.BasePRNGStandalone
  - - gnu.crypto.prng.FortunaStandalone
    - - gnu.crypto.prng.AsyncFortunaStandalone

- All Implemented Interfaces:
    IRandomStandalone, Serializable, Cloneable, Runnable

      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

- - ### Field Summary

    - ### Fields inherited from class gnu.crypto.prng.FortunaStandalone

      `generator, lastReseed, MIN_POOL_SIZE, NUM_POOLS, pool0Count, pools, reseedCount, SEED`

    - ### Fields inherited from class gnu.crypto.prng.BasePRNGStandalone

      `buffer, initialised, name, ndx`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `AsyncFortunaStandalone(I2PAppContext context)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `fillBlock()` Unused, see AsyncFortunaStandalone
    `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()`

    - ### Methods inherited from class gnu.crypto.prng.FortunaStandalone

      `addRandomByte, addRandomBytes, setup`

    - ### Methods inherited from class gnu.crypto.prng.BasePRNGStandalone

      `addRandomBytes, clone, init, isInitialised, name, nextByte, nextBytes, nextBytes`

    - ### Methods inherited from class java.lang.Object

      `equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### AsyncFortunaStandalone

          public AsyncFortunaStandalone(I2PAppContext context)

  - ### Method Detail

    - #### fillBlock

          public void fillBlock()

      Description copied from class: `FortunaStandalone`
      Unused, see AsyncFortunaStandalone
      Overrides:
        `fillBlock` 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`

    - #### seed

          public void seed(byte[] val)

      the seed is only propogated once the prng is started with startup()
      Overrides:
        `seed` in class `FortunaStandalone`

    - #### shutdown

          public void shutdown()

      Note - methods may hang or NPE or throw IllegalStateExceptions after this

    - #### startup

          public void startup()