incId method

int incId()

The same as getId but increments counter instead of using random value. Counter resets to zero each millisecond, blocks reaching randomValues. Use await incIdAsync() if hot loop for less than 1 millisecond burns.

Implementation

int incId() {
  while (true) {
    final millis = DateTime.now().millisecondsSinceEpoch - _firstYearMillis;
    if (_previousMillis != millis) {
      _counter = 0;
      _previousMillis = millis;
    }
    if (_counter >= randomValues) continue; // `sleep` is N/A on web platform.
    return millis * randomValues + _counter++;
  }
}