42 lines
938 B
TypeScript
42 lines
938 B
TypeScript
import Xev from "xev";
|
|
import Channel from "../channel.js";
|
|
|
|
const ev = new Xev();
|
|
|
|
export default class extends Channel {
|
|
public readonly chName = "queueStats";
|
|
public static shouldShare = true;
|
|
public static requireCredential = false;
|
|
|
|
constructor(id: string, connection: Channel["connection"]) {
|
|
super(id, connection);
|
|
this.onStats = this.onStats.bind(this);
|
|
this.onMessage = this.onMessage.bind(this);
|
|
}
|
|
|
|
public async init(params: any) {
|
|
ev.addListener("queueStats", this.onStats);
|
|
}
|
|
|
|
private onStats(stats: any) {
|
|
this.send("stats", stats);
|
|
}
|
|
|
|
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;
|
|
}
|
|
}
|
|
|
|
public dispose() {
|
|
ev.removeListener("queueStats", this.onStats);
|
|
}
|
|
}
|