kafkajs
Version:
A modern Apache Kafka client for node.js
47 lines (39 loc) • 1.14 kB
JavaScript
const Decoder = require('../../../decoder')
const { failure, createErrorFromCode, failIfVersionNotSupported } = require('../../../error')
/**
* JoinGroup Response (Version: 0) => error_code generation_id group_protocol leader_id member_id [members]
* error_code => INT16
* generation_id => INT32
* group_protocol => STRING
* leader_id => STRING
* member_id => STRING
* members => member_id member_metadata
* member_id => STRING
* member_metadata => BYTES
*/
const decode = async rawData => {
const decoder = new Decoder(rawData)
const errorCode = decoder.readInt16()
failIfVersionNotSupported(errorCode)
return {
errorCode,
generationId: decoder.readInt32(),
groupProtocol: decoder.readString(),
leaderId: decoder.readString(),
memberId: decoder.readString(),
members: decoder.readArray(decoder => ({
memberId: decoder.readString(),
memberMetadata: decoder.readBytes(),
})),
}
}
const parse = async data => {
if (failure(data.errorCode)) {
throw createErrorFromCode(data.errorCode)
}
return data
}
module.exports = {
decode,
parse,
}