/** * @file ByteBufferQueue - Efficient byte buffer with O(1) append and O(n) read. * * This class provides efficient management of byte buffers with O(1) append operations * and O(n) read operations. Clients can append entire buffers then copy data out across * buffer boundaries. * * @license MIT * @author nmhung1210 */ /** * A ByteBufferQueue manages a queue of byte buffers with efficient operations. * * Invariants maintained: * - size_ = sum of all buffer sizes - frontBufferOffset_ * - No buffer in the queue is empty * - If queue is empty, frontBufferOffset_ = 0 * - Otherwise, frontBufferOffset_ < front buffer size */ declare class ByteBufferQueue { #private; constructor(); /** * Number of bytes that can be read. * @returns {number} */ get size(): number; /** * Returns true if no bytes are available to read. * @returns {boolean} */ get empty(): boolean; /** * Copies data into the given buffer. Consumes bytes from the queue. * Returns the number of bytes written to bufferOut. * * @param {Buffer} bufferOut - Destination buffer to read into * @returns {number} Number of bytes actually read * @throws {TypeError} If bufferOut is not a Buffer */ readInto(bufferOut: Buffer): number; /** * Appends a buffer to the queue. Takes ownership of the buffer. * Empty buffers are ignored. * * @param {Buffer} buffer - Buffer to append * @throws {TypeError} If buffer is not a Buffer */ append(buffer: Buffer): void; /** * Clears all stored buffers. */ clear(): void; /** * Reads and consumes exactly n bytes. * * @param {number} n - Number of bytes to read * @returns {Buffer} Buffer containing exactly n bytes * @throws {RangeError} If fewer than n bytes are available */ read(n: number): Buffer; /** * Peeks at data without consuming it. * * @param {number} [n=this.#size] - Number of bytes to peek * @returns {Buffer} Buffer containing up to n bytes (not consumed) */ peek(n?: number): Buffer; } export default ByteBufferQueue; export { ByteBufferQueue };