rx-player
Version:
Canal+ HTML5 Video Player
34 lines (33 loc) • 1.18 kB
JavaScript
import log from "../../log";
import noop from "../../utils/noop";
import queueMicrotaskUtil from "../../utils/queue_microtask";
import CoreInterface from "./base";
export class MonoThreadCoreInterface extends CoreInterface {
constructor() {
super();
this._currentCoreListener = noop;
}
sendMessage(msg) {
log.debug("M-->C", "Sending message", { name: msg.type });
queueMicrotaskUtil(() => {
// NOTE: We don't clone for performance reasons
this._currentCoreListener({ data: msg });
});
}
getCallbacks() {
const setCoreMessageReceiver = (handler) => {
this._currentCoreListener = handler;
};
const sendCoreMessage = (msg, _transferables) => {
queueMicrotaskUtil(() => {
if (msg.type !== "log" /* CoreMessageType.LogMessage */) {
log.debug("M<--C", "Sending message", { name: msg.type });
}
this.listeners.forEach((listener) => {
listener(msg);
});
});
};
return { setCoreMessageReceiver, sendCoreMessage };
}
}