MCPcopy Create free account
hub / github.com/UsefulSoftwareCo/executor / isPortAvailable

Function isPortAvailable

apps/cli/src/daemon.ts:237–267  ·  view source on GitHub ↗
(input: {
  hostname: string;
  port: number;
})

Source from the content-addressed store, hash-verified

235};
236
237const isPortAvailable = (input: {
238 hostname: string;
239 port: number;
240}): Effect.Effect<boolean, Error> =>
241 Effect.tryPromise({
242 try: () =>
243 new Promise<boolean>((resolve) => {
244 const server = createServer() as ProbeServer;
245 const cleanup = () => {
246 if (typeof server.removeAllListeners === "function") {
247 server.removeAllListeners();
248 }
249 };
250
251 server.once("error", () => {
252 cleanup();
253 resolve(false);
254 });
255
256 server.once("listening", () => {
257 cleanup();
258 server.close(() => resolve(true));
259 });
260
261 server.listen({ port: input.port, host: toProbeHost(input.hostname) });
262 }),
263 catch: (cause) =>
264 cause instanceof Error
265 ? cause
266 : new Error(`Failed probing port availability: ${String(cause)}`),
267 });
268
269const pickEphemeralPort = (hostname: string): Effect.Effect<number, Error> =>
270 Effect.tryPromise({

Callers 1

chooseDaemonPortFunction · 0.85

Calls 5

toProbeHostFunction · 0.85
listenMethod · 0.80
cleanupFunction · 0.70
closeMethod · 0.65
resolveFunction · 0.50

Tested by

no test coverage detected