From 703e03aba33f234712206769f57717ba7d92d23d Mon Sep 17 00:00:00 2001 From: LinuxWizard42 Date: Wed, 12 Oct 2022 22:54:37 +0300 Subject: Added export_allowed file to make repository visible in cgit --- node_modules/dir-compare/src/fs/BufferPool.js | 46 +++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 node_modules/dir-compare/src/fs/BufferPool.js (limited to 'node_modules/dir-compare/src/fs/BufferPool.js') diff --git a/node_modules/dir-compare/src/fs/BufferPool.js b/node_modules/dir-compare/src/fs/BufferPool.js new file mode 100644 index 0000000..48febce --- /dev/null +++ b/node_modules/dir-compare/src/fs/BufferPool.js @@ -0,0 +1,46 @@ +/** + * Collection of buffers to be shared between async processes. + * Avoids allocating buffers each time async process starts. + * bufSize - size of each buffer + * bufNo - number of buffers + * Caller has to make sure no more than bufNo async processes run simultaneously. + */ +function BufferPool(bufSize, bufNo) { + var bufferPool = [] + for (var i = 0; i < bufNo; i++) { + bufferPool.push({ + buf1: alloc(bufSize), + buf2: alloc(bufSize), + busy: false + }) + } + + var allocateBuffers = function () { + for (var j = 0; j < bufNo; j++) { + var bufferPair = bufferPool[j] + if (!bufferPair.busy) { + bufferPair.busy = true + return bufferPair + } + } + throw new Error('Async buffer limit reached') + } + + return { + allocateBuffers: allocateBuffers, + freeBuffers: freeBuffers + } + + function freeBuffers(bufferPair) { + bufferPair.busy = false + } +} + +function alloc(bufSize) { + if (Buffer.alloc) { + return Buffer.alloc(bufSize) + } + return new Buffer(bufSize) +} + +module.exports = BufferPool -- cgit v1.2.3-86-g962b