@atomiqlabs/sdk
Version:
atomiq labs SDK for cross-chain swaps between smart chains and bitcoin
41 lines (33 loc) • 1.09 kB
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);
if(frameLengthBuffer.writeUint32LE!=null) {
frameLengthBuffer.writeUint32LE(serialized.length);
} else {
frameLengthBuffer.writeUInt32LE(serialized.length);
}
return this.writeFN(Buffer.concat([
frameLengthBuffer,
serialized
]));
}
/**
* Cancels the underlying sink and encoder
*/
end(): Promise<void> {
return this.endFN();
}
}