generate function

int generate(
  1. String key
)

Convert a String into a Redis slot hash.

Implementation

int generate(String key) {
  int char;
  var i = 0;
  var start = -1;
  var result = 0;
  var resultHash = 0;
  final utf8 = convert.utf8.encode(key);
  final length = utf8.length;

  while (i < length) {
    char = utf8[i++];
    if (start == -1) {
      if (char == 0x7B) {
        start = i;
      }
    } else if (char != 0x7D) {
      resultHash =
          _lookupList[(char ^ (resultHash >> 8)) & 0xFF] ^ (resultHash << 8);
    } else if (i - 1 != start) {
      return resultHash & 0x3FFF;
    }

    result = _lookupList[(char ^ (result >> 8)) & 0xFF] ^ (result << 8);
  }

  return result & 0x3FFF;
}