MCPcopy
hub / github.com/microsoft/vscode-js-debug / startDebugServer

Function startDebugServer

src/dapDebugServer.ts:232–289  ·  view source on GitHub ↗
(options: net.ListenOptions)

Source from the content-addressed store, hash-verified

230}
231
232function startDebugServer(options: net.ListenOptions) {
233 const services = createGlobalContainer({ storagePath, isVsCode: false });
234 const managers = new Set<DapSessionManager>();
235
236 const server = net
237 .createServer(async socket => {
238 try {
239 const logger = new ProxyLogger();
240 const transport = new StreamDapTransport(socket, socket, logger);
241 const connection = new DapConnection(transport, logger);
242 const dap = connection.dap();
243
244 const initialized = await collectInitialize(dap);
245 if ('__pendingTargetId' in initialized.launchParams) {
246 const ptId = initialized.launchParams.__pendingTargetId;
247 const manager = ptId && [...managers].find(m => m.hasPendingTarget(ptId));
248 if (!manager) {
249 throw new Error(`Cannot find pending target for ${ptId}`);
250 }
251 logger.connectTo(manager.services.get(ILogger));
252 manager.handleConnection({ ...initialized, connection });
253 } else {
254 const sessionServices = createTopLevelSessionContainer(services);
255 const manager = new DapSessionManager(dap, sessionServices);
256 managers.add(manager);
257 sessionServices.bind(IInitializeParams).toConstantValue(initialized.initializeParams);
258 logger.connectTo(sessionServices.get(ILogger));
259 const binder = new Binder(
260 manager,
261 connection,
262 sessionServices,
263 new TargetOrigin('targetOrigin'),
264 );
265 transport.closed(() => {
266 binder.dispose();
267 managers.delete(manager);
268 });
269 initialized.deferred.resolve(await binder.boot(initialized.launchParams, dap));
270 }
271 } catch (e) {
272 console.error(e);
273 return socket.destroy();
274 }
275 })
276 .on('error', err => {
277 console.error(err);
278 process.exit(1);
279 })
280 .listen(options, () => {
281 // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
282 const addr = server.address()!;
283 console.log(
284 `Debug server listening at ${
285 typeof addr === 'string' ? addr : `${addr.address}:${addr.port}`
286 }`,
287 );
288 });
289}

Callers 1

dapDebugServer.tsFile · 0.70

Calls 15

connectToMethod · 0.95
handleConnectionMethod · 0.95
disposeMethod · 0.95
bootMethod · 0.95
createGlobalContainerFunction · 0.90
collectInitializeFunction · 0.85
listenMethod · 0.80
createServerMethod · 0.80
dapMethod · 0.80
hasPendingTargetMethod · 0.80
bindMethod · 0.80

Tested by

no test coverage detected