blob: 3e2b7d8d072f1d3dbc28496e98bdd95b020210de (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
import { MessageHandler, PromisifiedIPCManager, HandlerMap } from './promisified_ipc_manager';
export default abstract class IPCMessageReceiver {
protected static IPCManager: PromisifiedIPCManager;
protected handlers: HandlerMap = {};
protected abstract configureInternalHandlers: () => void;
/**
* Add a listener at this message. When the monitor process
* receives a message, it will invoke all registered functions.
*/
public on = (name: string, handler: MessageHandler) => {
const handlers = this.handlers[name];
if (!handlers) {
this.handlers[name] = [handler];
} else {
handlers.push(handler);
}
};
/**
* Unregister a given listener at this message.
*/
public off = (name: string, handler: MessageHandler) => {
const handlers = this.handlers[name];
if (handlers) {
const index = handlers.indexOf(handler);
if (index > -1) {
handlers.splice(index, 1);
}
}
};
/**
* Unregister all listeners at this message.
*/
public clearMessageListeners = (...names: string[]) => names.map(name => delete this.handlers[name]);
}
|