basant307/AI_Governance_Project
048
1"use strict";2module.exports = BufferWriter;3 4// extends Writer5var Writer = require("./writer");6(BufferWriter.prototype = Object.create(Writer.prototype)).constructor = BufferWriter;7 8var util = require("./util/minimal");9 10/**11 * Constructs a new buffer writer instance.12 * @classdesc Wire format writer using node buffers.13 * @extends Writer14 * @constructor15 */16function BufferWriter() {17 Writer.call(this);18}19 20BufferWriter._configure = function () {21 /**22 * Allocates a buffer of the specified size.23 * @function24 * @param {number} size Buffer size25 * @returns {Buffer} Buffer26 */27 BufferWriter.alloc = util._Buffer_allocUnsafe;28 29 BufferWriter.writeBytesBuffer = util.Buffer && util.Buffer.prototype instanceof Uint8Array && util.Buffer.prototype.set.name === "set"30 ? function writeBytesBuffer_set(val, buf, pos) {31 buf.set(val, pos); // faster than copy (requires node >= 4 where Buffers extend Uint8Array and set is properly inherited)32 // also works for plain array values33 }34 /* istanbul ignore next */35 : function writeBytesBuffer_copy(val, buf, pos) {36 if (val.copy) // Buffer values37 val.copy(buf, pos, 0, val.length);38 else for (var i = 0; i < val.length;) // plain array values39 buf[pos++] = val[i++];40 };41};42 43 44/**45 * @override46 */47BufferWriter.prototype.bytes = function write_bytes_buffer(value) {48 if (util.isString(value))49 value = util._Buffer_from(value, "base64");50 var len = value.length >>> 0;51 this.uint32(len);52 if (len)53 this._push(BufferWriter.writeBytesBuffer, len, value);54 return this;55};56 57function writeStringBuffer(val, buf, pos) {58 if (val.length < 40) // plain js is faster for short strings (probably due to redundant assertions)59 util.utf8.write(val, buf, pos);60 else if (buf.utf8Write)61 buf.utf8Write(val, pos);62 else63 buf.write(val, pos);64}65 66/**67 * @override68 */69BufferWriter.prototype.string = function write_string_buffer(value) {70 var len = util.Buffer.byteLength(value);71 this.uint32(len);72 if (len)73 this._push(writeStringBuffer, len, value);74 return this;75};76 77 78/**79 * Finishes the write operation.80 * @name BufferWriter#finish81 * @function82 * @returns {Buffer} Finished buffer83 */84 85BufferWriter._configure();86 