add queue, message, json parsing
This commit is contained in:
45
src/queue.ts
Normal file
45
src/queue.ts
Normal file
@ -0,0 +1,45 @@
|
||||
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
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user