git ssb

0+

wanderer🌟 / js-primea-hypervisor



Tree: 3d251f593ad3a3a4e9b46eaf068ca9dc8ec39bfa

Files: 3d251f593ad3a3a4e9b46eaf068ca9dc8ec39bfa / port.js

671 bytesRaw
1module.exports = class Port {
2 constructor (name) {
3 this.name = name
4 this._queue = []
5 this.ticks = 0
6 }
7
8 queue (message) {
9 this.ticks = message.ticks
10 if (message.isSystem) {
11 return
12 } if (this._resolve) {
13 return this._resolve(message)
14 } else {
15 this.queue.push(message)
16 }
17 }
18
19 // this only workls for one Promise
20 nextMessage () {
21 const message = this.queue.shift()
22
23 return new Promise((resolve, reject) => {
24 if (message) {
25 resolve(message)
26 } else {
27 this._resolve = resolve
28 }
29 })
30 }
31
32 peek () {
33 return this._queue[0]
34 }
35
36 shift () {
37 this._queue.shift()
38 }
39}
40

Built with git-ssb-web