87 lines
2.5 KiB
JavaScript
87 lines
2.5 KiB
JavaScript
var _;
|
|
|
|
_ = require("underscore");
|
|
|
|
module.exports = function(user_list) {
|
|
var TestConnector;
|
|
return TestConnector = (function() {
|
|
function TestConnector(engine, HB, execution_listener) {
|
|
var appliedOperationsListener, send_;
|
|
this.engine = engine;
|
|
this.HB = HB;
|
|
this.execution_listener = execution_listener;
|
|
send_ = (function(_this) {
|
|
return function(o) {
|
|
return _this.send(o);
|
|
};
|
|
})(this);
|
|
this.execution_listener.push(send_);
|
|
this.applied_operations = [];
|
|
appliedOperationsListener = (function(_this) {
|
|
return function(o) {
|
|
return _this.applied_operations.push(o);
|
|
};
|
|
})(this);
|
|
this.execution_listener.push(appliedOperationsListener);
|
|
if (!((user_list != null ? user_list.length : void 0) === 0)) {
|
|
this.engine.applyOps(user_list[0].getHistoryBuffer()._encode());
|
|
}
|
|
this.unexecuted = {};
|
|
}
|
|
|
|
TestConnector.prototype.getOpsInExecutionOrder = function() {
|
|
return this.applied_operations;
|
|
};
|
|
|
|
TestConnector.prototype.send = function(o) {
|
|
var user, _i, _len, _results;
|
|
if ((o.uid.creator === this.HB.getUserId()) && (typeof o.uid.op_number !== "string")) {
|
|
_results = [];
|
|
for (_i = 0, _len = user_list.length; _i < _len; _i++) {
|
|
user = user_list[_i];
|
|
if (user.getUserId() !== this.HB.getUserId()) {
|
|
_results.push(user.getConnector().receive(o));
|
|
} else {
|
|
_results.push(void 0);
|
|
}
|
|
}
|
|
return _results;
|
|
}
|
|
};
|
|
|
|
TestConnector.prototype.receive = function(o) {
|
|
var _base, _name;
|
|
if ((_base = this.unexecuted)[_name = o.uid.creator] == null) {
|
|
_base[_name] = [];
|
|
}
|
|
return this.unexecuted[o.uid.creator].push(o);
|
|
};
|
|
|
|
TestConnector.prototype.flushOne = function(user) {
|
|
var _ref;
|
|
if (((_ref = this.unexecuted[user]) != null ? _ref.length : void 0) > 0) {
|
|
return this.engine.applyOp(this.unexecuted[user].shift());
|
|
}
|
|
};
|
|
|
|
TestConnector.prototype.flushOneRandom = function() {
|
|
return this.flushOne(_.random(0, user_list.length - 1));
|
|
};
|
|
|
|
TestConnector.prototype.flushAll = function() {
|
|
var n, ops, _ref;
|
|
_ref = this.unexecuted;
|
|
for (n in _ref) {
|
|
ops = _ref[n];
|
|
this.engine.applyOps(ops);
|
|
}
|
|
return this.unexecuted = {};
|
|
};
|
|
|
|
return TestConnector;
|
|
|
|
})();
|
|
};
|
|
|
|
//# sourceMappingURL=TestConnector.js.map
|