Pool works as queue or stack.
Queue-Pool Is pool of elements, implements major Array methods. With ability to auto-adjust length.
If you handle a group of incoming streams of chunks, process them in a pool, there is a need to release them in stack or queue order.
npm install queue-pool
import QPool from "queue-pool";
const qpool = new QPool(options);
options
init for custom initialize, instead of empty string as default.maxIn a number, for max size allowed in pool. Default is 2.Methods
getlengthelementsSize an array contains size of each element in the pool.elementsLength a number of elements in.flushunshiftpushshiftpopprocess push and adjust the size.
process(input, type, cb)
Default is queue.In case you made several
pushcalls passing the allowed number set inmaxIn. It autoshiftin case of queue/popin case of stack over elements and thenpushthe new one. Using this method you guarantee that you are not passing the number of elements you set.
const qpool = new QPool();
qpool.push("pigs, "); // pigs,
qpool.push("goats, "); // pigs, goats,
qpool.push("sheep."); // pigs, goats, sheep.
qpool.shift(); // goats, sheep.
qpool.pop(); // goats,
qpool.unshift("sheep, "); // sheep, goats,
qpool.elementsLength(); // 2
qpool.elementsSize(); // [7 , 7]
qpool.length(); // 14
const qpool = new QPool({ maxIn: 5 });
for (let i = 0; i < 10; i++) qpool.push(`${i} `);
qpool.get(); // 0 1 2 3 4 5 6 7 8 9
qpool.process("last-element");
qpool.get(); // 6 7 8 9 last-element
const qpool = new QPool({ maxIn: 5 });
for (let i = 0; i < 10; i++) qpool.push(`${i} `);
qpool.get(); // 0 1 2 3 4 5 6 7 8 9
qpool.process("last-element", "stack", (get) => {
  console.log(get); //  0, 1, 2, 3 last-element
});
test
This project is licensed under the MIT License