kafkajs
Version:
A modern Apache Kafka client for node.js
25 lines (21 loc) • 651 B
JavaScript
const Encoder = require('../../encoder')
const crc32 = require('../../crc32')
const { Types: Compression, COMPRESSION_CODEC_MASK } = require('../compression')
/**
* v0
* Message => Crc MagicByte Attributes Key Value
* Crc => int32
* MagicByte => int8
* Attributes => int8
* Key => bytes
* Value => bytes
*/
module.exports = ({ compression = Compression.None, key, value }) => {
const content = new Encoder()
.writeInt8(0) // magicByte
.writeInt8(compression & COMPRESSION_CODEC_MASK)
.writeBytes(key)
.writeBytes(value)
const crc = crc32(content)
return new Encoder().writeInt32(crc).writeEncoder(content)
}