implemented logTable method on data stores

This commit is contained in:
Kevin Jahns
2017-10-22 23:50:39 +02:00
parent 142a5ada60
commit 2b7d2ed1e6
15 changed files with 94 additions and 31 deletions

View File

@@ -1,6 +1,7 @@
import { getStruct } from '../Util/structReferences.js'
import BinaryDecoder from '../Binary/Decoder.js'
import Delete from '../Struct/Delete.js'
import { logID } from './messageToString.js'
class MissingEntry {
constructor (decoder, missing, struct) {
@@ -17,7 +18,7 @@ class MissingEntry {
*/
function _integrateRemoteStructHelper (y, struct) {
struct._integrate(y)
if (!(struct instanceof Delete)) {
if (struct.constructor !== Delete) {
let msu = y._missingStructs.get(struct._id.user)
if (msu != null) {
let len = struct._length
@@ -46,11 +47,10 @@ export function stringifyStructs (y, decoder, strBuilder) {
let Constr = getStruct(reference)
let struct = new Constr()
let missing = struct._fromBinary(y, decoder)
let logMessage = struct._logString()
let logMessage = ' ' + struct._logString()
if (missing.length > 0) {
logMessage += missing.map(id => `ID (user: ${id.user}, clock: ${id.clock})`).join(', ')
logMessage += ' .. missing: ' + missing.map(logID).join(', ')
}
logMessage += '\n'
strBuilder.push(logMessage)
}
}

View File

@@ -2,13 +2,16 @@ import BinaryDecoder from '../Binary/Decoder.js'
import { stringifyStructs } from './integrateRemoteStructs.js'
import { stringifySyncStep1 } from './syncStep1.js'
import { stringifySyncStep2 } from './syncStep2.js'
import ID from '../Util/ID.js'
import RootID from '../Util/RootID.js'
import Y from '../Y.js'
export function messageToString ([y, buffer]) {
let decoder = new BinaryDecoder(buffer)
decoder.readVarString() // read roomname
let type = decoder.readVarString()
let strBuilder = []
strBuilder.push('\n === ' + type + ' ===\n')
strBuilder.push('\n === ' + type + ' ===')
if (type === 'update') {
stringifyStructs(y, decoder, strBuilder)
} else if (type === 'sync step 1') {
@@ -26,3 +29,20 @@ export function messageToRoomname (buffer) {
decoder.readVarString() // roomname
return decoder.readVarString() // messageType
}
export function logID (id) {
if (id !== null && id._id != null) {
id = id._id
}
if (id === null) {
return '()'
} else if (id instanceof ID) {
return `(${id.user},${id.clock})`
} else if (id instanceof RootID) {
return `(${id.name},${id.type})`
} else if (id.constructor === Y) {
return `y`
} else {
throw new Error('This is not a valid ID!')
}
}

View File

@@ -7,18 +7,17 @@ import { RootFakeUserID } from '../Util/RootID.js'
export function stringifySyncStep1 (y, decoder, strBuilder) {
let auth = decoder.readVarString()
let protocolVersion = decoder.readVarUint()
strBuilder.push(`
- auth: "${auth}"
- protocolVersion: ${protocolVersion}
`)
strBuilder.push(` - auth: "${auth}"`)
strBuilder.push(` - protocolVersion: ${protocolVersion}`)
// write SS
strBuilder.push(' == SS: \n')
let ssBuilder = []
let len = decoder.readUint32()
for (let i = 0; i < len; i++) {
let user = decoder.readVarUint()
let clock = decoder.readVarUint()
strBuilder.push(` ${user}: ${clock}\n`)
ssBuilder.push(`(${user}:${clock})`)
}
strBuilder.push(' == SS: ' + ssBuilder.join(','))
}
export function sendSyncStep1 (connector, syncUser) {

View File

@@ -2,10 +2,9 @@ import { stringifyStructs, integrateRemoteStructs } from './integrateRemoteStruc
import { readDeleteSet } from './deleteSet.js'
export function stringifySyncStep2 (y, decoder, strBuilder) {
strBuilder.push(' - auth: ' + decoder.readVarString() + '\n')
strBuilder.push(' == OS: \n')
strBuilder.push(' - auth: ' + decoder.readVarString())
// write DS to string
strBuilder.push(' == DS: \n')
strBuilder.push(' == DS:')
let len = decoder.readUint32()
for (let i = 0; i < len; i++) {
let user = decoder.readVarUint()
@@ -18,6 +17,7 @@ export function stringifySyncStep2 (y, decoder, strBuilder) {
strBuilder.push(`[${from}, ${to}, ${gc}]`)
}
}
strBuilder.push(' == OS:')
stringifyStructs(y, decoder, strBuilder)
}