def __kv_map_to_bytes(kv_map): ctx = BytesSerializationContext() # Sorting the map elements to create chunks deterministically, but this is not mandatory for importing the chunk for key, value in sorted(kv_map.items()): ctx.write_varuint(len(key)) ctx.write_bytes(key) ctx.write_varuint(len(value)) ctx.write_bytes(value) return ctx.getbytes()
def __put_timestamp(self, new_timestamp, batch): """Write a single timestamp, non-recursively""" ctx = BytesSerializationContext() ctx.write_varuint(len(new_timestamp.attestations)) for attestation in new_timestamp.attestations: attestation.serialize(ctx) ctx.write_varuint(len(new_timestamp.ops)) for op in new_timestamp.ops: op.serialize(ctx) batch.Put(new_timestamp.msg, ctx.getbytes())
def __create_kv_map(ts, msg, kv_map): ctx = BytesSerializationContext() ctx.write_varuint(len(ts.attestations)) for attestation in ts.attestations: attestation.serialize(ctx) ctx.write_varuint(len(ts.ops)) for op in ts.ops: op.serialize(ctx) kv_map[msg] = ctx.getbytes() for op, timestamp in ts.ops.items(): Backup.__create_kv_map(timestamp, timestamp.msg, kv_map)