UNPKG

@astronautlabs/amf

Version:

Action Message Format (AMF0/3)

51 lines 1.87 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.FloatSerializer = void 0; const bitstream_1 = require("@astronautlabs/bitstream"); class FloatSerializer { *read(reader, type, parent, field) { let length; try { length = (0, bitstream_1.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 = (0, bitstream_1.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`); } } } exports.FloatSerializer = FloatSerializer; //# sourceMappingURL=float.js.map