Files
fx_cast/ext/src/lib/messageRouter.ts
2019-04-10 05:34:17 +01:00

36 lines
717 B
TypeScript

"use strict";
import { Message } from "../types";
interface Details {
tabId: number
, frameId: number
}
type SenderCallback = (message: Message, details: Details) => void;
const routeMap = new Map<string, SenderCallback>();
function register (routeName: string, senderCallback: SenderCallback) {
routeMap.set(routeName, senderCallback);
}
function deregister (routeName: string) {
routeMap.delete(routeName);
}
function handleMessage (message: Message, details?: Details) {
const destination = message.subject.split(":")[0];
if (routeMap.has(destination)) {
routeMap.get(destination)(message, details);
}
}
export default {
register
, deregister
, handleMessage
};