encode method
Implementation
Uint8List encode() {
final beforeBytes = beforeImage ?? Uint8List(0);
final afterBytes = afterImage ?? Uint8List(0);
Uint8List effectiveAfter = afterBytes;
if (ddlPayload != null && afterBytes.isEmpty) {
effectiveAfter = Uint8List.fromList(utf8.encode(jsonEncode(ddlPayload)));
}
final totalLen = headerSize + beforeBytes.length + effectiveAfter.length;
final buf = Uint8List(totalLen);
final bd = ByteData.sublistView(buf);
bd.setUint32( 0, magic, Endian.little);
bdSetUint64(bd, 4, lsn);
bdSetUint64(bd, 12, txnId);
bdSetUint64(bd, 20, prevLsn);
buf[28] = op.code;
buf[29] = flags;
bd.setUint16(30, tableId, Endian.little);
bdSetUint64(bd, 32, rowId);
bd.setUint32(40, beforeBytes.length, Endian.little);
bd.setUint32(44, effectiveAfter.length, Endian.little);
bd.setUint32(48, 0, Endian.little); // CRC placeholder
buf.setRange(headerSize,
headerSize + beforeBytes.length, beforeBytes);
buf.setRange(headerSize + beforeBytes.length,
headerSize + beforeBytes.length + effectiveAfter.length, effectiveAfter);
final crc = _computeCrcWithPayload(buf, 48);
bd.setUint32(48, crc, Endian.little);
return buf;
}