## BasicIterator Actor

We recommend using the LoopActor instead of the BasicIterator.

The BasicIterator can send linearly progressive/regressive or random data in messages to a message group at designated time interval. The following image illustrate the output of the iterator with several controllable parameters:

To use the BasicIterator implementation, load basicIterator.so and create an actor of type BasicIterator.

### BasicIterator Actor messages

In addition to the messages understood by all actors, the BasicIterator understands the following messages:

SetMessageGroup`hActor name`
  Assign a message group to send the ticks to. The argument `name` is a string.
SetTimeIncrement`hActor timeIncr`
  Set the duration of the clock tick. The argument `timeIncr` has a range of [-1e+09, 1e+09] and defaults to 0. It has an optional trailing time argument (in seconds).
SetDataIncrement`hActor dataIncr`
  This gets sent to the message group as an argument. The argument `dataIncr` has a range of [-1e+09, 1e+09] and defaults to 0. It has an optional trailing time argument (in seconds).
SetDataStart`hActor dataStart`
  Starting value of the data. If random data is to be sent, `dataStart` indicates the lower bound of random number generation. The argument `dataStart` has a range of [-1e+09, 1e+09] and defaults to 0.
SetDataEnd`hActor dataEnd`
  Terminal value of data, causing the iterator to end. If random data is to be sent, `dataEnd` indicates the upper bound of random number generation. The argument `dataEnd` has a range of [-1e+09, 1e+09] and defaults to 0.
SetData`hActor dataValue`
  Set the data value immediately. The argument `dataValue` has a range of [-1e+09, 1e+09] and defaults to 0.
SetDuration`hActor timeEnd`
  Time's-up value. Iterator stops when the clock gets this far. The argument `timeEnd` has a range of [-1e+09, 1e+09] and defaults to 0.
SetIterationLimit`hActor iterationLimit`
  Iterator stops after this many iterations. The argument `iterationLimit` has a range of [-1000000000, 1000000000] and defaults to 0.
EnableDataEnd`hActor enableDataEnd`
  Enable or disable iterator-ending because of data value. The argument `enableDataEnd` takes logical value as 0 or 1 and defaults to 0.
EnableDurationEnd`hActor enableDurationEnd`
  Enable or disable iterator-ending because time's up. The argument `enableDurationEnd` takes logical value as 0 or 1 and defaults to 0.
EnableIterationLimit`hActor enableIterationLimit`
  (Guess). The argument `enableIterationLimit` takes logical value as 0 or 1 and defaults to 0.
SetLoop`hActor numloops`
  -1 = forever, 0 = never, 1 = once, x = x times. The argument `numloops` has a range of [-1, 1000000000] and defaults to 1.
SetSwing`hActor enableSwing`
  If true, swing back and forth instead of jumping back to the start. The argument `enableSwing` takes logical value as 0 or 1 and defaults to 0.
SetRandom `hActor enableRandom`
  Enable or disable random number generation. The argument `enableRandom` takes logical value as 0 or 1 and defaults to 0. If true, data to be sent out will be random numbers lies in the range set by SetDataStart and SetDataEnd. Iterator will not end because of data value even if EnableDataEnd is true because it doesn't make sense.
SetSeed `hActor seed`
  Set seed for random number generator, specifically, `drand48()`. Using the same seed will generate exactly the same random sequence.