You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
68 lines
2.0 KiB
68 lines
2.0 KiB
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
class BufferList {
|
|
constructor(buffers = []) {
|
|
this.buffers = buffers;
|
|
}
|
|
add(buffer, front) {
|
|
this.buffers[front ? 'unshift' : 'push'](buffer);
|
|
return this;
|
|
}
|
|
addInt16(val, front) {
|
|
return this.add(Buffer.from([val >>> 8, val >>> 0]), front);
|
|
}
|
|
getByteLength(initial) {
|
|
return this.buffers.reduce(function (previous, current) {
|
|
return previous + current.length;
|
|
}, initial || 0);
|
|
}
|
|
addInt32(val, first) {
|
|
return this.add(Buffer.from([(val >>> 24) & 0xff, (val >>> 16) & 0xff, (val >>> 8) & 0xff, (val >>> 0) & 0xff]), first);
|
|
}
|
|
addCString(val, front) {
|
|
var len = Buffer.byteLength(val);
|
|
var buffer = Buffer.alloc(len + 1);
|
|
buffer.write(val);
|
|
buffer[len] = 0;
|
|
return this.add(buffer, front);
|
|
}
|
|
addString(val, front) {
|
|
var len = Buffer.byteLength(val);
|
|
var buffer = Buffer.alloc(len);
|
|
buffer.write(val);
|
|
return this.add(buffer, front);
|
|
}
|
|
addChar(char, first) {
|
|
return this.add(Buffer.from(char, 'utf8'), first);
|
|
}
|
|
addByte(byte) {
|
|
return this.add(Buffer.from([byte]));
|
|
}
|
|
join(appendLength, char) {
|
|
var length = this.getByteLength();
|
|
if (appendLength) {
|
|
this.addInt32(length + 4, true);
|
|
return this.join(false, char);
|
|
}
|
|
if (char) {
|
|
this.addChar(char, true);
|
|
length++;
|
|
}
|
|
var result = Buffer.alloc(length);
|
|
var index = 0;
|
|
this.buffers.forEach(function (buffer) {
|
|
buffer.copy(result, index, 0);
|
|
index += buffer.length;
|
|
});
|
|
return result;
|
|
}
|
|
static concat() {
|
|
var total = new BufferList();
|
|
for (var i = 0; i < arguments.length; i++) {
|
|
total.add(arguments[i]);
|
|
}
|
|
return total.join();
|
|
}
|
|
}
|
|
exports.default = BufferList;
|
|
//# sourceMappingURL=buffer-list.js.map
|