80f1ec6fe2dc4cbfd66528a55bd27b67cdb3b1b6
[platform/framework/web/wrtjs.git] / wrt_app / common / service_manager.ts
1 import { Worker, isMainThread } from 'worker_threads';
2 import { wrt } from '../browser/wrt';
3
4 interface WorkerMap {
5   [id: string]: any;
6 }
7 let workers: WorkerMap = {};
8 let serviceType: string = wrt.getServiceModel();;
9 let runner: any;
10
11 function isStandalone() {
12   return serviceType === 'STANDALONE';
13 }
14
15 export function startService(id: string, filename: string) {
16   console.log(`startService - ${id}`);
17   if (isStandalone()) {
18     runner = require('../common/service_runner');
19     runner.start(id, filename);
20   } else {
21     if (isMainThread) {
22       let startService = __dirname + '/service_runner.js';
23       workers[id] = new Worker(startService, { workerData: { id: id, filename: filename } });
24     }
25   }
26 }
27
28 export function stopService(id: string) {
29   console.log(`stopService - ${id}`);
30   if (isStandalone()) {
31     if (runner) {
32       runner.stop(id);
33     }
34   } else {
35     workers[id].postMessage('stopService');
36   }
37 }