Merge pull request #439 from Synthesia-Technologies/feat/deterministic-update-encoding

Make encodeStateAsUpdate deterministic
This commit is contained in:
Kevin Jahns
2023-02-21 10:59:31 +01:00
committed by GitHub

View File

@@ -219,7 +219,11 @@ 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) => {
// Ensure that the delete set is written in a deterministic order
Array.from(ds.clients.entries())
.sort((clientA, clientB) => clientA[0] - clientB[0])
.forEach(([client, dsitems]) => {
encoder.resetDsCurVal() encoder.resetDsCurVal()
encoding.writeVarUint(encoder.restEncoder, client) encoding.writeVarUint(encoder.restEncoder, client)
const len = dsitems.length const len = dsitems.length