mirror of
https://github.com/ether/etherpad-lite.git
synced 2025-04-28 11:26:16 -04:00
Fix typos, add Thread class
This commit is contained in:
parent
a90cf74108
commit
30279e2fe3
1 changed files with 86 additions and 63 deletions
|
@ -23,7 +23,7 @@
|
||||||
// of the document. These revisions are connected together by various
|
// of the document. These revisions are connected together by various
|
||||||
// changesets, or deltas, between any two revisions.
|
// changesets, or deltas, between any two revisions.
|
||||||
|
|
||||||
require('./jquery.class');
|
//require('./jquery.class');
|
||||||
|
|
||||||
$.Class("Changeset",
|
$.Class("Changeset",
|
||||||
{//statics
|
{//statics
|
||||||
|
@ -144,7 +144,7 @@ $.Class("RevisionCache",
|
||||||
// which is closer to our target, so we should push that changeset to
|
// which is closer to our target, so we should push that changeset to
|
||||||
// the list and move to that new revision to continue building a path
|
// the list and move to that new revision to continue building a path
|
||||||
var delta_rev = this.getRevision(current_rev.revnum + current_changeset.deltarev);
|
var delta_rev = this.getRevision(current_rev.revnum + current_changeset.deltarev);
|
||||||
if (delta_rev.lt(to_rev, is_reverse) {
|
if (delta_rev.lt(to_rev, is_reverse)) {
|
||||||
changesets.push(current_changeset);
|
changesets.push(current_changeset);
|
||||||
current_rev = delta_rev;
|
current_rev = delta_rev;
|
||||||
break;
|
break;
|
||||||
|
@ -153,7 +153,6 @@ $.Class("RevisionCache",
|
||||||
if (stop || current_rev == old_rev)
|
if (stop || current_rev == old_rev)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
var status = 'partial';
|
var status = 'partial';
|
||||||
if (current_rev == to_rev)
|
if (current_rev == to_rev)
|
||||||
status = 'complete';
|
status = 'complete';
|
||||||
|
@ -163,66 +162,6 @@ $.Class("RevisionCache",
|
||||||
'rev': current_rev.rev,
|
'rev': current_rev.rev,
|
||||||
'status': status,
|
'status': status,
|
||||||
'changesets': changesets,
|
'changesets': changesets,
|
||||||
/*'spans': spans,
|
|
||||||
'times': times
|
|
||||||
*/
|
|
||||||
};
|
|
||||||
},
|
|
||||||
findPath: function (from, to) {
|
|
||||||
var current_rev = this.getRevision(from);
|
|
||||||
var to_rev = this.getRevision(to);
|
|
||||||
var is_reverse = !(from < to);
|
|
||||||
var changesets = [];
|
|
||||||
|
|
||||||
if (from == to) {
|
|
||||||
//TODO: implement short-circuit
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!current_rev.changesets.length) {
|
|
||||||
// You cannot build a path if the starting revision hasn't
|
|
||||||
// got any changesets
|
|
||||||
//TODO: implement short-circuit
|
|
||||||
}
|
|
||||||
|
|
||||||
while (current_rev.lt(to_rev)) {
|
|
||||||
for (var i = 0; i < current_rev.changesets.length; i++) {
|
|
||||||
// we might get stuck on a particular revision if only a
|
|
||||||
// partial path is available.
|
|
||||||
old_rev = current_rev;
|
|
||||||
// the next (first) changeset in the current revision has a delta
|
|
||||||
// in the opposite direction to that in which we are trying to
|
|
||||||
// move, and so cannot help us. Because the changeset list is
|
|
||||||
// sorted, we can just stop here.
|
|
||||||
if (current_rev.changesets[i].deltarev < 0) {
|
|
||||||
// When can this happen?
|
|
||||||
stop = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// the current revision has a changeset which helps us get to a revision
|
|
||||||
// which is closer to our target, so we should push that changeset to
|
|
||||||
// the list and move to that new revision to continue building a path
|
|
||||||
if (current_rev.revnum + current_rev.changesets[i].deltarev <= to) {
|
|
||||||
changesets.push(current_rev.changesets[i]);
|
|
||||||
current_rev = this.getRevision(current_rev.rev + current_rev.changesets[i].deltarev);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (stop || current_rev == old_rev)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
var status = 'partial';
|
|
||||||
if (current_rev == to_rev)
|
|
||||||
status = 'complete';
|
|
||||||
|
|
||||||
return {
|
|
||||||
'fromRev': from,
|
|
||||||
'rev': current_rev.rev,
|
|
||||||
'status': status,
|
|
||||||
'changesets': changesets,
|
|
||||||
/*'spans': spans,
|
|
||||||
'times': times
|
|
||||||
*/
|
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
addChangeset: function (from, to, value, reverseValue, timedelta) {
|
addChangeset: function (from, to, value, reverseValue, timedelta) {
|
||||||
|
@ -233,12 +172,96 @@ $.Class("RevisionCache",
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
$.Class("Thread",
|
||||||
|
{//statics
|
||||||
|
},
|
||||||
|
{//instance
|
||||||
|
init: function () {
|
||||||
|
this.is_running = false;
|
||||||
|
this.is_stopping = false;
|
||||||
|
this._interval_id = null;
|
||||||
|
},
|
||||||
|
_run: function () {
|
||||||
|
console.log("[thread] tick");
|
||||||
|
},
|
||||||
|
// start the run loop
|
||||||
|
start: function () {
|
||||||
|
var _this = this;
|
||||||
|
console.log("[thread] starting")
|
||||||
|
var wrapper = function () {
|
||||||
|
if (_this.is_running && _this.is_stopping) {
|
||||||
|
console.log("[thread] shutting down")
|
||||||
|
clearInterval(_this._interval_id);
|
||||||
|
_this.is_running = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
_this._run.apply(_this);
|
||||||
|
};
|
||||||
|
this._interval_id = setInterval(wrapper, 1000);
|
||||||
|
this.is_running = true;
|
||||||
|
},
|
||||||
|
// stop the run loop
|
||||||
|
stop: function () {
|
||||||
|
this.is_stopping = true;
|
||||||
|
console.log("[thread] request stop")
|
||||||
|
// TODO: consider finding a way to make this block
|
||||||
|
// or alternatively, having a callback which is called
|
||||||
|
// when the thread stops
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
$.Class("ChangesetRequest",
|
||||||
|
{//statics
|
||||||
|
},
|
||||||
|
{//instance
|
||||||
|
init: function (start, end) {
|
||||||
|
this.start = start;
|
||||||
|
this.end = end;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
Thread("ChangesetLoader",
|
||||||
|
{//statics
|
||||||
|
},
|
||||||
|
{//instance
|
||||||
|
init: function () {
|
||||||
|
this._super();
|
||||||
|
this.queue_large = [];
|
||||||
|
this.queue_medium = [];
|
||||||
|
this.queue_small = [];
|
||||||
|
},
|
||||||
|
enqueue: function (start, count) {
|
||||||
|
//TODO: check cache to see if we really need to fetch this
|
||||||
|
// maybe even to splices if we just need a smaller range
|
||||||
|
// in the middle
|
||||||
|
var queue = null;
|
||||||
|
if (count >= 100)
|
||||||
|
queue = this.queue_large;
|
||||||
|
else if (count >= 10)
|
||||||
|
queue = this.queue_medium;
|
||||||
|
else
|
||||||
|
queue = this.queue_small;
|
||||||
|
|
||||||
|
queue.push(new ChangesetRequest(start, start+count));
|
||||||
|
},
|
||||||
|
_run: function () {
|
||||||
|
console.log("[changesetloader] tick");
|
||||||
|
//TODO: pop an item from the queue and perform a request.
|
||||||
|
|
||||||
|
},
|
||||||
|
}
|
||||||
|
);
|
||||||
function loadBroadcastRevisionsJS(clientVars)
|
function loadBroadcastRevisionsJS(clientVars)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
console.log("here")
|
||||||
revisionCache = new RevisionCache(clientVars.collab_client_vars.rev || 0);
|
revisionCache = new RevisionCache(clientVars.collab_client_vars.rev || 0);
|
||||||
revisionInfo.latest = clientVars.collab_client_vars.rev || -1;
|
revisionInfo.latest = clientVars.collab_client_vars.rev || -1;
|
||||||
|
|
||||||
|
// cl = new ChangesetLoader();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue