Merge pull request #439 from Synthesia-Technologies/feat/deterministic-update-encoding
Make encodeStateAsUpdate deterministic
This commit is contained in:
commit
58b754950e
@ -219,17 +219,21 @@ export const createDeleteSetFromStructStore = ss => {
|
|||||||
*/
|
*/
|
||||||
export const writeDeleteSet = (encoder, ds) => {
|
export const writeDeleteSet = (encoder, ds) => {
|
||||||
encoding.writeVarUint(encoder.restEncoder, ds.clients.size)
|
encoding.writeVarUint(encoder.restEncoder, ds.clients.size)
|
||||||
ds.clients.forEach((dsitems, client) => {
|
|
||||||
encoder.resetDsCurVal()
|
// Ensure that the delete set is written in a deterministic order
|
||||||
encoding.writeVarUint(encoder.restEncoder, client)
|
Array.from(ds.clients.entries())
|
||||||
const len = dsitems.length
|
.sort((clientA, clientB) => clientA[0] - clientB[0])
|
||||||
encoding.writeVarUint(encoder.restEncoder, len)
|
.forEach(([client, dsitems]) => {
|
||||||
for (let i = 0; i < len; i++) {
|
encoder.resetDsCurVal()
|
||||||
const item = dsitems[i]
|
encoding.writeVarUint(encoder.restEncoder, client)
|
||||||
encoder.writeDsClock(item.clock)
|
const len = dsitems.length
|
||||||
encoder.writeDsLen(item.len)
|
encoding.writeVarUint(encoder.restEncoder, len)
|
||||||
}
|
for (let i = 0; i < len; i++) {
|
||||||
})
|
const item = dsitems[i]
|
||||||
|
encoder.writeDsClock(item.clock)
|
||||||
|
encoder.writeDsLen(item.len)
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
x
Reference in New Issue
Block a user