source: frontend/node_modules/fork-ts-checker-webpack-plugin/lib/rpc/RpcService.js

Last change on this file was 9af201e, checked in by MBK <marija.karapandzova@…>, 12 days ago

Fix frontend appearance

  • Property mode set to 100644
File size: 2.8 KB
Line 
1"use strict";
2var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3 function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4 return new (P || (P = Promise))(function (resolve, reject) {
5 function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6 function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7 function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8 step((generator = generator.apply(thisArg, _arguments || [])).next());
9 });
10};
11Object.defineProperty(exports, "__esModule", { value: true });
12const RpcMessage_1 = require("./RpcMessage");
13function createRpcService(port) {
14 const handlers = new Map();
15 let isListenerRegistered = false;
16 const callListener = (message) => __awaiter(this, void 0, void 0, function* () {
17 if (RpcMessage_1.isRpcCallMessage(message)) {
18 const handler = handlers.get(message.procedure);
19 try {
20 if (!handler) {
21 throw new Error(`No handler found for procedure ${message.procedure}.`);
22 }
23 const result = yield handler(message.payload);
24 yield port.dispatchMessage(RpcMessage_1.createRpcReturn(message.procedure, message.id, result));
25 }
26 catch (error) {
27 yield port.dispatchMessage(RpcMessage_1.createRpcThrow(message.procedure, message.id, {
28 message: error.toString(),
29 stack: error.stack,
30 }));
31 }
32 }
33 });
34 return {
35 isOpen: () => port.isOpen() && isListenerRegistered,
36 open: () => __awaiter(this, void 0, void 0, function* () {
37 if (!port.isOpen()) {
38 yield port.open();
39 }
40 if (!isListenerRegistered) {
41 port.addMessageListener(callListener);
42 isListenerRegistered = true;
43 }
44 }),
45 close: () => __awaiter(this, void 0, void 0, function* () {
46 if (isListenerRegistered) {
47 port.removeMessageListener(callListener);
48 isListenerRegistered = false;
49 }
50 if (port.isOpen()) {
51 yield port.close();
52 }
53 }),
54 addCallHandler: (procedure, handler) => {
55 if (handlers.has(procedure)) {
56 throw new Error(`Handler for '${procedure}' procedure has been already registered`);
57 }
58 handlers.set(procedure, handler);
59 },
60 removeCallHandler: (procedure) => handlers.delete(procedure),
61 };
62}
63exports.createRpcService = createRpcService;
Note: See TracBrowser for help on using the repository browser.