UNPKG

@astronautlabs/amf

Version:

Action Message Format (AMF0/3)

47 lines 1.68 kB
import { resolveLength } from "@astronautlabs/bitstream"; export class FloatSerializer { *read(reader, type, parent, field) { let length; try { length = resolveLength(field.length, parent, field); } catch (e) { throw new Error(`Failed to resolve length of number via 'length' determinant: ${e.message}`); } if (!reader.isAvailable(length)) yield { remaining: length }; if (length === 8) { return Buffer.from([reader.readSync(8)]).readFloatBE(); } else if (length === 16) { return Buffer.from([reader.readSync(8), reader.readSync(8)]).readDoubleBE(); } else { throw new Error(`FloatSerializer supports only 1-byte (8 bit) or 2-byte (16 bit) values`); } } write(writer, type, parent, field, value) { let length; try { length = resolveLength(field.length, parent, field); } catch (e) { throw new Error(`Failed to resolve length of number via 'length' determinant: ${e.message}`); } if (length === 8) { let buf = Buffer.alloc(1); buf.writeFloatBE(value); writer.write(8, buf[0]); } else if (length === 16) { let buf = Buffer.alloc(2); buf.writeDoubleBE(value); writer.write(8, buf[0]); writer.write(8, buf[1]); } else { throw new Error(`FloatSerializer supports only 1-byte (8 bit) or 2-byte (16 bit) values`); } } } //# sourceMappingURL=float.js.map