diff --git a/README.md b/README.md index f5be386..90837d1 100644 --- a/README.md +++ b/README.md @@ -133,3 +133,6 @@ The queue is full. #### empty The queue is empty. + +#### space +The queue has space available to store more items. diff --git a/package.json b/package.json index 5f4908c..0aaff6b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "spique", - "version": "2.1.0", + "version": "2.2.0", "description": "A spiral deque - high performance and dynamic queue size", "main": "spique.js", "scripts": { diff --git a/ringbuffer.js b/ringbuffer.js index 46f7278..771a590 100644 --- a/ringbuffer.js +++ b/ringbuffer.js @@ -73,6 +73,8 @@ module.exports = class Ringbuffer extends events.EventEmitter { buffer[pos] = undefined; if (this.isEmpty()) this.emit("empty", this); + if (items < size) + this.emit("space", this); return value; }; @@ -87,6 +89,8 @@ module.exports = class Ringbuffer extends events.EventEmitter { items--; if (this.isEmpty()) this.emit("empty", this); + if (items < size) + this.emit("space", this); return value; }; diff --git a/spique.js b/spique.js index 9ea1e80..f00f45d 100644 --- a/spique.js +++ b/spique.js @@ -121,6 +121,8 @@ module.exports = class Spique extends events.EventEmitter { items--; if (items === 0) this.emit("empty", this); + if (items < maxItems) + this.emit("space", this); return value; }; @@ -137,6 +139,8 @@ module.exports = class Spique extends events.EventEmitter { items--; if (items === 0) this.emit("empty", this); + if (items < maxItems) + this.emit("space", this); return value; };