Path: blob/master/src/packages/project/named-servers/index.ts
5858 views
/*1* This file is part of CoCalc: Copyright © 2020 Sagemath, Inc.2* License: MS-RSL – see LICENSE.md for details3*/45import { getLogger } from "@cocalc/project/logger";6import * as message from "@cocalc/util/message";7import { NamedServerName } from "@cocalc/util/types/servers";8import { reuseInFlight } from "@cocalc/util/reuse-in-flight";9import { start } from "./control";1011const winston = getLogger("named-servers");1213async function getPort(name: NamedServerName): Promise<number> {14winston.debug(`getPort("${name}")`);15return await start(name);16}1718async function handleMessage(socket, mesg): Promise<void> {19try {20mesg.port = await getPort(mesg.name);21} catch (err) {22socket.write_mesg("json", message.error({ id: mesg.id, error: `${err}` }));23return;24}25socket.write_mesg("json", mesg);26}2728const handle = reuseInFlight(handleMessage, {29createKey: (args) => `${args[1]?.name}`,30});31export default handle;323334