MqttMongoNodejs/src/queue.ts
2017-05-04 11:35:37 +02:00

46 lines
586 B
TypeScript

import * as Events from 'events'
export class Queue<T> extends Events.EventEmitter {
private q : T[] = []
constructor() {
super()
}
isEmpty() : boolean {
return this.q.length == 0
}
knock() {
this.emit('data')
}
enq(x : T) {
this.q.push(x)
this.emit('data')
}
reenq(x : T) {
this.q.unshift(x)
this.emit('data')
}
deq() : T {
var x : T = this.peek()
this.q.shift()
return x
}
peek() : T {
if (this.isEmpty()) {
throw new Error("queue is empty")
}
var x : T = this.q[0]
return x
}
}