UNPKG

@seriousme/opifex

Version:

MQTT client & server for Deno & NodeJS

49 lines (42 loc) 1.18 kB
import type { PacketId, ReturnCodes, TPacketType } from "./types.ts"; import { PacketType } from "./PacketType.ts"; import { Encoder } from "./encoder.ts"; import { Decoder } from "./decoder.ts"; /** * SubackPacket is sent by the server to the client to confirm receipt and * processing of a SubscribePacket. */ export type SubackPacket = { type: TPacketType; id: PacketId; returnCodes: ReturnCodes; }; export const suback: { encode(packet: SubackPacket): { flags: number; bytes: number[] }; decode(buffer: Uint8Array): SubackPacket; } = { encode(packet: SubackPacket): { flags: number; bytes: number[] } { const flags = 0; const encoder = new Encoder(); encoder.setInt16(packet.id); encoder.setRemainder(packet.returnCodes); return { flags, bytes: encoder.done(), }; }, decode(buffer: Uint8Array): SubackPacket { const decoder = new Decoder(buffer); const id = decoder.getInt16(); const payload = decoder.getRemainder(); const returnCodes = []; for (const code of payload) { returnCodes.push(code); } return { type: PacketType.suback, id, returnCodes, }; }, };