From 80a2172715b6dd225a331d8f2cbccc78dcbd1302 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 10 Mar 2019 19:16:33 +0900 Subject: Resolve #4462 --- src/server/api/stream/channels/queue-stats.ts | 41 +++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 src/server/api/stream/channels/queue-stats.ts (limited to 'src/server/api/stream/channels/queue-stats.ts') diff --git a/src/server/api/stream/channels/queue-stats.ts b/src/server/api/stream/channels/queue-stats.ts new file mode 100644 index 0000000000..0bda0cfcb9 --- /dev/null +++ b/src/server/api/stream/channels/queue-stats.ts @@ -0,0 +1,41 @@ +import autobind from 'autobind-decorator'; +import Xev from 'xev'; +import Channel from '../channel'; + +const ev = new Xev(); + +export default class extends Channel { + public readonly chName = 'queueStats'; + public static shouldShare = true; + public static requireCredential = false; + + @autobind + public async init(params: any) { + ev.addListener('queueStats', this.onStats); + } + + @autobind + private onStats(stats: any) { + this.send('stats', stats); + } + + @autobind + public onMessage(type: string, body: any) { + switch (type) { + case 'requestLog': + ev.once(`queueStatsLog:${body.id}`, statsLog => { + this.send('statsLog', statsLog); + }); + ev.emit('requestQueueStatsLog', { + id: body.id, + length: body.length + }); + break; + } + } + + @autobind + public dispose() { + ev.removeListener('queueStats', this.onStats); + } +} -- cgit v1.2.3-freya