Files: 3d251f593ad3a3a4e9b46eaf068ca9dc8ec39bfa / port.js
671 bytesRaw
1 | module.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