rx-player
Version:
Canal+ HTML5 Video Player
37 lines (29 loc) • 996 B
text/typescript
import type { ICoreMessage } from "../../core/types";
import type { IMainThreadMessage } from "../types";
export default abstract class CoreInterface {
protected listeners: Array<(evt: ICoreMessage) => void> = [];
protected listenersError: Array<() => void> = [];
public abstract sendMessage(msg: IMainThreadMessage): void;
public addMessageListener(cb: (evt: ICoreMessage) => void): void {
this.listeners.push(cb);
}
public removeMessageListener(cb: (evt: ICoreMessage) => void): void {
const index = this.listeners.indexOf(cb);
if (index >= 0) {
this.listeners.splice(index, 1);
}
}
public addErrorListener(cb: () => void): void {
this.listenersError.push(cb);
}
public removeErrorListener(cb: () => void): void {
const index = this.listenersError.indexOf(cb);
if (index >= 0) {
this.listenersError.splice(index, 1);
}
}
public dispose(): void {
this.listeners.length = 0;
this.listenersError.length = 0;
}
}