| 411 | } |
| 412 | |
| 413 | split(start, end, numberOfSplits) { |
| 414 | // ]min, min] means the whole ring. |
| 415 | if (start.equals(end) && start.equals(this.minToken())) { |
| 416 | end = this.maxToken(); |
| 417 | } |
| 418 | |
| 419 | const startVal = start.getValue(); |
| 420 | const endVal = end.getValue(); |
| 421 | |
| 422 | let range = endVal.subtract(startVal); |
| 423 | if (range.lessThan(Integer.ZERO)) { |
| 424 | range = range.add(this.ringLength()); |
| 425 | } |
| 426 | |
| 427 | const values = this.splitBase(startVal, range, this.maxValue(), this.ringLength(), numberOfSplits); |
| 428 | return values.map(v => new token.RandomToken(v)); |
| 429 | } |
| 430 | } |
| 431 | |
| 432 | class ByteOrderedTokenizer extends Tokenizer { |