D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
home
/
whatsapp-api
/
node_modules
/
fast-fifo
/
Filename :
fixed-size.js
back
Copy
module.exports = class FixedFIFO { constructor (hwm) { if (!(hwm > 0) || ((hwm - 1) & hwm) !== 0) throw new Error('Max size for a FixedFIFO should be a power of two') this.buffer = new Array(hwm) this.mask = hwm - 1 this.top = 0 this.btm = 0 this.next = null } clear () { this.top = this.btm = 0 this.next = null this.buffer.fill(undefined) } push (data) { if (this.buffer[this.top] !== undefined) return false this.buffer[this.top] = data this.top = (this.top + 1) & this.mask return true } shift () { const last = this.buffer[this.btm] if (last === undefined) return undefined this.buffer[this.btm] = undefined this.btm = (this.btm + 1) & this.mask return last } peek () { return this.buffer[this.btm] } isEmpty () { return this.buffer[this.btm] === undefined } }