@atomiqlabs/sdk-lib
Version:
Basic SDK functionality library for atomiq
37 lines (29 loc) • 944 B
text/typescript
import {Buffer} from "buffer";
export class ParamEncoder {
private readonly writeFN: (data: Buffer) => Promise<void>;
private readonly endFN: () => Promise<void>;
constructor(write: (data: Buffer) => Promise<void>, end: () => Promise<void>) {
this.writeFN = write;
this.endFN = end;
}
/**
* Write a set of parameters to the underlying sink
*
* @param data
*/
writeParams(data: {[key: string]: any}): Promise<void> {
const serialized: Buffer = Buffer.from(JSON.stringify(data));
const frameLengthBuffer = Buffer.alloc(4);
frameLengthBuffer.writeUint32LE(serialized.length);
return this.writeFN(Buffer.concat([
frameLengthBuffer,
serialized
]));
}
/**
* Cancels the underlying sink and encoder
*/
end(): Promise<void> {
return this.endFN();
}
}