From ae187b6d75c8079da0be1dc288613bad8466fe61 Mon Sep 17 00:00:00 2001 From: RaindropsSys Date: Tue, 24 Oct 2023 17:43:37 +0200 Subject: Initial commit --- .../dir-compare/build/src/fs/BufferPool.js | 41 ++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 desktop/node_modules/dir-compare/build/src/fs/BufferPool.js (limited to 'desktop/node_modules/dir-compare/build/src/fs/BufferPool.js') diff --git a/desktop/node_modules/dir-compare/build/src/fs/BufferPool.js b/desktop/node_modules/dir-compare/build/src/fs/BufferPool.js new file mode 100644 index 0000000..0899013 --- /dev/null +++ b/desktop/node_modules/dir-compare/build/src/fs/BufferPool.js @@ -0,0 +1,41 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.BufferPool = void 0; +/** + * Collection of buffers to be shared between async processes. + * Avoids allocating buffers each time async process starts. + */ +class BufferPool { + /** + * + * @param bufSize Size of each buffer. + * @param bufNo Number of buffers. Caller has to make sure no more than bufNo async processes run simultaneously. + */ + constructor(bufSize, bufNo) { + this.bufSize = bufSize; + this.bufNo = bufNo; + this.bufferPool = []; + for (let i = 0; i < this.bufNo; i++) { + this.bufferPool.push({ + buf1: Buffer.alloc(this.bufSize), + buf2: Buffer.alloc(this.bufSize), + busy: false + }); + } + } + allocateBuffers() { + for (let j = 0; j < this.bufNo; j++) { + const bufferPair = this.bufferPool[j]; + if (!bufferPair.busy) { + bufferPair.busy = true; + return bufferPair; + } + } + throw new Error('Async buffer limit reached'); + } + freeBuffers(bufferPair) { + bufferPair.busy = false; + } +} +exports.BufferPool = BufferPool; +//# sourceMappingURL=BufferPool.js.map \ No newline at end of file -- cgit