--- /dev/null
+import * as vm from 'vm';
+
+let sandbox: vm.Context = {
+ console: console,
+ require: require,
+ services: {}
+};
+
+export function handleService(service_name: string, service_id: string) {
+ if (!service_name)
+ return;
+
+ let need_stop = (service_name.substr(0, 5) === 'stop_');
+ if (need_stop) {
+ service_name = service_name.substr(5);
+ }
+ let builtin_service = `./${service_name}.js`;
+ console.log(`Builtin service is ${builtin_service}`);
+ let options = {
+ filename: service_id,
+ };
+ if (need_stop) {
+ let code = `services['${service_id}'].stop('${service_id}')`;
+ vm.runInContext(code, sandbox);
+ } else {
+ let code = `services['${service_id}'] = require('${builtin_service}');`;
+ code += `services['${service_id}'].run('${service_id}')`;
+ vm.runInNewContext(code, sandbox, options);
+ }
+}
\ No newline at end of file
let tv = wrt.tv as NativeWRTjs.TVExtension;
tv.setWasmFlags();
tv.setDiskCache(app_id);
+ tv.delayShutdown();
let files = tv.getWasmFiles(app_id);
console.log(files);
- files.forEach((file_path) => {
+ files.forEach((file_path: string) => {
compileWasmForCaching(file_path);
});
}
+
+export function stop(app_id: string) {
+ // TODO, stop caching will be implemented here
+ console.log(`wasm_builder.js suspended, app_id:(${app_id})`);
+}
\ No newline at end of file
import '../common/init';
import { wrt } from '../browser/wrt';
import * as ServiceManager from '../common/service_manager';
+import * as BuiltinService from './builtins/builtin_handler';
-wrt.on('start-service', (event, internal_id) => {
+wrt.on('start-service', (event: any, internal_id: string) => {
console.log('start service app : ' + internal_id);
ServiceManager.startService(internal_id);
});
-wrt.on('stop-service', (event, internal_id) => {
+wrt.on('stop-service', (event: any, internal_id: string) => {
ServiceManager.stopService(internal_id);
if (wrt.getServiceModel() == "STANDALONE")
process.exit();
});
-wrt.on('builtin-service', (event, internal_id, service_name) => {
- console.log(`service_name: ${service_name}`);
- const vm = require('vm');
- let builtin_service = '';
- if (service_name === 'wasm_builder') {
- builtin_service = './builtins/wasm_builder.js';
- }
- if (builtin_service) {
- console.log(`Builtin service is ${builtin_service}`);
- let sandbox = {
- console: console,
- require: require,
- };
- let options = {
- filename: internal_id,
- };
- let code = `require('${builtin_service}').run('${internal_id}')`;
- vm.runInNewContext(code, sandbox, options);
- }
+wrt.on('builtin-service', (event: any, internal_id: string, service_name: string) => {
+ console.log(`service_name: ${service_name}`);
+ BuiltinService.handleService(service_name, internal_id);
});
-wrt.on('quit', (event) => {
- process.exit();
+wrt.on('quit', (event: any) => {
+ process.exit();
});
process.on('exit', (code) => {