32 lines
647 B
JavaScript
32 lines
647 B
JavaScript
import EventEmitter from "events";
|
|
import {Logger} from "../logging/logger.js";
|
|
|
|
export class BasePoller extends EventEmitter {
|
|
|
|
constructor() {
|
|
super();
|
|
this.task = null;
|
|
}
|
|
|
|
async pollOnce(){
|
|
throw new Error("Not implemented.");
|
|
}
|
|
|
|
start(interval) {
|
|
if(this.task){
|
|
Logger.error("A task has already been scheduled");
|
|
return;
|
|
}
|
|
|
|
super.task = setInterval(async () => {
|
|
await this.pollOnce();
|
|
}, interval);
|
|
}
|
|
|
|
stop() {
|
|
if (this.task) {
|
|
clearInterval(this.task);
|
|
super.task = null;
|
|
}
|
|
}
|
|
} |