import {IParamWriter} from "./IParamWriter"; export class ParamEncoder implements IParamWriter { private readonly writeFN: (data: Buffer) => Promise; private readonly endFN: () => Promise; constructor(write: (data: Buffer) => Promise, end: () => Promise) { this.writeFN = write; this.endFN = end; } writeParams(data: any): Promise { const serialized: Buffer = Buffer.from(JSON.stringify(data)); const frameLengthBuffer = Buffer.alloc(4); frameLengthBuffer.writeUint32LE(serialized.length); return this.writeFN(Buffer.concat([ frameLengthBuffer, serialized ])); } end(): Promise { return this.endFN(); } }