UNPKG

@platformatic/kafka

Version:

Modern and performant client for Apache Kafka

54 lines (53 loc) 1.96 kB
import { ResponseError } from "../../errors.js"; import { Writer } from "../../protocol/writer.js"; import { createAPI } from "../definitions.js"; /* CreatePartitions Request (Version: 1) => [topics] timeout_ms validate_only TAG_BUFFER topics => name count [assignments] TAG_BUFFER name => STRING count => INT32 assignments => [broker_ids] TAG_BUFFER broker_ids => INT32 timeout_ms => INT32 validate_only => BOOLEAN */ export function createRequest(topics, timeoutMs, validateOnly) { return Writer.create() .appendArray(topics, (w, t) => { w.appendString(t.name, false) .appendInt32(t.count) .appendArray(t.assignments, (w, a) => w.appendArray(a.brokerIds, (w, b) => w.appendInt32(b), false, false), false, false); }, false, false) .appendInt32(timeoutMs) .appendBoolean(validateOnly); } /* CreatePartitions Response (Version: 1) => throttle_time_ms [results] TAG_BUFFER throttle_time_ms => INT32 results => name error_code error_message TAG_BUFFER name => STRING error_code => INT16 error_message => NULLABLE_STRING */ export function parseResponse(_correlationId, apiKey, apiVersion, reader) { const errors = []; const response = { throttleTimeMs: reader.readInt32(), results: reader.readArray((r, i) => { const result = { name: r.readString(false), errorCode: r.readInt16(), errorMessage: r.readNullableString(false) }; if (result.errorCode !== 0) { errors.push([`/results/${i}`, result.errorCode]); } return result; }, false, false) }; if (errors.length) { throw new ResponseError(apiKey, apiVersion, Object.fromEntries(errors), response); } return response; } export const api = createAPI(37, 1, createRequest, parseResponse, false, false);