"use strict"; const { Controller } = require("ee-core"); const Cross = require("ee-core/cross"); const Log = require("ee-core/log"); const HttpClient = require("ee-core/httpclient"); const Services = require("ee-core/services"); /** * Cross * @class */ class CrossController extends Controller { constructor(ctx) { super(ctx); } /** * View process service information */ info() { const pids = Cross.getPids(); Log.info("cross pids:", pids); let num = 1; pids.forEach((pid) => { let entity = Cross.getProc(pid); Log.info(`server-${num} name:${entity.name}`); Log.info(`server-${num} config:`, entity.config); num++; }); return "hello electron-egg"; } /** * Get service url */ async getUrl(args) { const { name } = args; const serverUrl = Cross.getUrl(name); return serverUrl; } /** * kill service * By default (modifiable), killing the process will exit the electron application. */ async killServer(args) { const { type, name } = args; if (type == "all") { Cross.killAll(); } else { Cross.killByName(name); } return; } /** * create service */ async createServer(args) { const { program } = args; if (program == "go") { Services.get("cross").createGoServer(); } else if (program == "java") { Services.get("cross").createJavaServer(); } else if (program == "python") { Services.get("cross").createPythonServer(); } return; } /** * Access the api for the cross service */ async requestApi(args) { const { name, urlPath, params } = args; const hc = new HttpClient(); const serverUrl = Cross.getUrl(name); console.log("Server Url:", serverUrl); const apiHello = serverUrl + urlPath; const options = { method: "GET", data: params || {}, dataType: "json", timeout: 1000, }; const result = await hc.request(apiHello, options); return result.data; } } CrossController.toString = () => "[class CrossController]"; module.exports = CrossController;