2fa082dddfd844fb872068f91a03e7c957f60ccb
1 import { BroadcastChannel
} from
'worker_threads';
3 import BaseError from
'../exception/BaseError';
4 import type { JsonType
} from
'../types/JsonType';
6 BroadcastChannelRequest
,
7 BroadcastChannelResponse
,
9 } from
'../types/WorkerBroadcastChannel';
11 export default abstract class WorkerBroadcastChannel
extends BroadcastChannel
{
12 protected constructor() {
16 public sendRequest(request
: BroadcastChannelRequest
): void {
17 this.postMessage(request
);
20 protected sendResponse(response
: BroadcastChannelResponse
): void {
21 this.postMessage(response
);
24 protected isRequest(message
: JsonType
[]): boolean {
25 return Array.isArray(message
) && message
.length
=== 3;
28 protected isResponse(message
: JsonType
[]): boolean {
29 return Array.isArray(message
) && message
.length
=== 2;
32 protected validateMessageEvent(messageEvent
: MessageEvent
): MessageEvent
{
33 if (Array.isArray(messageEvent
.data
) === false) {
34 throw new BaseError('Worker broadcast channel protocol message event data is not an array');