logootsropes-crdt
Version:
Provides several data structures to represent a text in a ropes-like structure and manipulating it
33 lines (26 loc) • 830 B
JavaScript
var Identifier = require('./identifier');
var InfiniteString = require('./infiniteString');
var Iterator = require('./iterator');
var createBetweenPosition = function (id1, id2, replicaNumber, clock) {
var s1 = new InfiniteString(Number.MIN_VALUE, id1 != null ? id1.iterator() : null);
var s2 = new InfiniteString(Number.MAX_VALUE, id2 != null ? id2.iterator() : null);
var sb = [];
do {
var b1 = s1.next();
var b2 = s2.next();
if (b2 - b1 > 2) {
//if (replicaNumber <= b1 || replicaNumber >= b2) {
var r = (Math.random() * (b2 - b1 - 2)) + b1 + 1;
sb.push(r);
//}
break;
}
else {
sb.push(b1);
}
} while(true);
sb.push(replicaNumber);
sb.push(clock);
return sb;
};
module.exports = createBetweenPosition;