Improvements on DS lookups

This commit is contained in:
Kevin Jahns 2016-01-26 11:29:58 +01:00
parent 39dc2317b7
commit 6b1cf18822
2 changed files with 17 additions and 11 deletions

View File

@ -98,8 +98,8 @@ module.exports = function (gulp, helperOptions) {
}).bundle() }).bundle()
.pipe(source('specs.js')) .pipe(source('specs.js'))
.pipe(buffer()) .pipe(buffer())
.pipe($.sourcemaps.init({loadMaps: true})) // .pipe($.sourcemaps.init({loadMaps: true}))
.pipe($.sourcemaps.write('.')) // .pipe($.sourcemaps.write('.'))
.pipe(gulp.dest('./build/')) .pipe(gulp.dest('./build/'))
}) })

View File

@ -331,6 +331,7 @@ module.exports = function (Y/* :any */) {
* garbageCollectOperation (id) { * garbageCollectOperation (id) {
this.store.addToDebug('yield* this.garbageCollectOperation(', id, ')') this.store.addToDebug('yield* this.garbageCollectOperation(', id, ')')
// check to increase the state of the respective user // check to increase the state of the respective user
var o = null
var state = yield* this.getState(id[0]) var state = yield* this.getState(id[0])
if (state.clock === id[1]) { if (state.clock === id[1]) {
state.clock++ state.clock++
@ -338,11 +339,11 @@ module.exports = function (Y/* :any */) {
yield* this.checkDeleteStoreForState(state) yield* this.checkDeleteStoreForState(state)
// then set the state // then set the state
yield* this.setState(state) yield* this.setState(state)
} } else if (state.clock > id[1]) {
yield* this.markGarbageCollected(id) o = yield* this.getOperation(id)
} // else state.clock < id[1], don't clean up
yield* this.markGarbageCollected(id) // always mark gc'd
// if op exists, then clean that mess up.. // if op exists, then clean that mess up..
var o = yield* this.getOperation(id)
if (o != null) { if (o != null) {
/* /*
if (!o.deleted) { if (!o.deleted) {
@ -363,7 +364,7 @@ module.exports = function (Y/* :any */) {
var right = yield* this.getOperation(o.right) var right = yield* this.getOperation(o.right)
right.left = o.left right.left = o.left
if (Y.utils.compareIds(right.origin, id)) { // rights origin is o if (o.originOf != null && o.originOf.length > 0) {
// find new origin of right ops // find new origin of right ops
// origin is the first left deleted operation // origin is the first left deleted operation
var neworigin = o.left var neworigin = o.left
@ -545,10 +546,15 @@ module.exports = function (Y/* :any */) {
var del = deletions[i] var del = deletions[i]
var id = [del[0], del[1]] var id = [del[0], del[1]]
// always try to delete.. // always try to delete..
var addOperation = yield* this.deleteOperation(id) var state = yield* this.getState(id[0])
if (addOperation) { if (id[1] < state.clock) {
// TODO:.. really .. here? You could prevent calling all these functions in operationAdded var addOperation = yield* this.deleteOperation(id)
yield* this.store.operationAdded(this, {struct: 'Delete', target: id}) if (addOperation) {
// TODO:.. really .. here? You could prevent calling all these functions in operationAdded
yield* this.store.operationAdded(this, {struct: 'Delete', target: id})
}
} else {
yield* this.markDeleted(id)
} }
if (del[2]) { if (del[2]) {
// gc // gc