Path: blob/master/src/packages/project/port_manager.ts
1447 views
/*1* This file is part of CoCalc: Copyright © 2023 Sagemath, Inc.2* License: MS-RSL – see LICENSE.md for details3*/45import { readFile } from "node:fs/promises";6import { sageServerPaths } from "@cocalc/project/data";78type Type = "sage";910/*11The port_manager manages the ports for the sage worksheet server.12*/1314// a local cache15const ports: { [type in Type]?: number } = {};1617export async function get_port(type: Type = "sage"): Promise<number> {18const val = ports[type];19if (val != null) {20return val;21} else {22const content = await readFile(sageServerPaths.port);23try {24const val = parseInt(content.toString());25ports[type] = val;26return val;27} catch (err) {28throw new Error(`${type}_server port file corrupted -- ${err}`);29}30}31}3233export function forget_port(type: Type = "sage") {34if (ports[type] != null) {35delete ports[type];36}37}383940