diff options
author | RaindropsSys <raindrops@equestria.dev> | 2023-10-24 17:43:37 +0200 |
---|---|---|
committer | RaindropsSys <raindrops@equestria.dev> | 2023-10-24 17:43:37 +0200 |
commit | ae187b6d75c8079da0be1dc288613bad8466fe61 (patch) | |
tree | 5ea0d34185a2270f29ffaa65e1f5258028d7d5d0 /desktop/node_modules/dir-compare/build/src/fs/BufferPool.js | |
download | mist-ae187b6d75c8079da0be1dc288613bad8466fe61.tar.gz mist-ae187b6d75c8079da0be1dc288613bad8466fe61.tar.bz2 mist-ae187b6d75c8079da0be1dc288613bad8466fe61.zip |
Initial commit
Diffstat (limited to 'desktop/node_modules/dir-compare/build/src/fs/BufferPool.js')
-rw-r--r-- | desktop/node_modules/dir-compare/build/src/fs/BufferPool.js | 41 |
1 files changed, 41 insertions, 0 deletions
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 |