D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
home
/
whatsapp-api
/
node_modules
/
fast-fifo
/
Filename :
index.js
back
Copy
const FixedFIFO = require('./fixed-size') module.exports = class FastFIFO { constructor (hwm) { this.hwm = hwm || 16 this.head = new FixedFIFO(this.hwm) this.tail = this.head this.length = 0 } clear () { this.head = this.tail this.head.clear() this.length = 0 } push (val) { this.length++ if (!this.head.push(val)) { const prev = this.head this.head = prev.next = new FixedFIFO(2 * this.head.buffer.length) this.head.push(val) } } shift () { if (this.length !== 0) this.length-- const val = this.tail.shift() if (val === undefined && this.tail.next) { const next = this.tail.next this.tail.next = null this.tail = next return this.tail.shift() } return val } peek () { const val = this.tail.peek() if (val === undefined && this.tail.next) return this.tail.next.peek() return val } isEmpty () { return this.length === 0 } }