• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.ReceiveBuffer = void 0;
4class ReceiveBuffer {
5    constructor(size = 4096) {
6        this.buffer = Buffer.allocUnsafe(size);
7        this.offset = 0;
8        this.originalSize = size;
9    }
10    get length() {
11        return this.offset;
12    }
13    append(data) {
14        if (!Buffer.isBuffer(data)) {
15            throw new Error('Attempted to append a non-buffer instance to ReceiveBuffer.');
16        }
17        if (this.offset + data.length >= this.buffer.length) {
18            const tmp = this.buffer;
19            this.buffer = Buffer.allocUnsafe(Math.max(this.buffer.length + this.originalSize, this.buffer.length + data.length));
20            tmp.copy(this.buffer);
21        }
22        data.copy(this.buffer, this.offset);
23        return (this.offset += data.length);
24    }
25    peek(length) {
26        if (length > this.offset) {
27            throw new Error('Attempted to read beyond the bounds of the managed internal data.');
28        }
29        return this.buffer.slice(0, length);
30    }
31    get(length) {
32        if (length > this.offset) {
33            throw new Error('Attempted to read beyond the bounds of the managed internal data.');
34        }
35        const value = Buffer.allocUnsafe(length);
36        this.buffer.slice(0, length).copy(value);
37        this.buffer.copyWithin(0, length, length + this.offset - length);
38        this.offset -= length;
39        return value;
40    }
41}
42exports.ReceiveBuffer = ReceiveBuffer;
43//# sourceMappingURL=receivebuffer.js.map