diff --git a/src/vs/vscode.proposed.d.ts b/src/vs/vscode.proposed.d.ts index 4efd75c1cde8653aef8ea48233ffb1dd9cfd7edb..b5e189378e12b6036c7ff26fe8d1f2013a5c5d24 100644 --- a/src/vs/vscode.proposed.d.ts +++ b/src/vs/vscode.proposed.d.ts @@ -508,15 +508,30 @@ declare module 'vscode' { * A Debug Adapter Tracker is a means to track the communication between VS Code and a Debug Adapter. */ export interface DebugAdapterTracker { - // VS Code -> Debug Adapter - startDebugAdapter?(): void; - toDebugAdapter?(message: any): void; - stopDebugAdapter?(): void; - - // Debug Adapter -> VS Code - fromDebugAdapter?(message: any): void; - debugAdapterError?(error: Error): void; - debugAdapterExit?(code?: number, signal?: string): void; + /** + * A session with the debug adapter is about to be started. + */ + onWillStartSession?(): void; + /** + * The debug adapter is about to receive a Debug Adapter Protocol message from VS Code. + */ + onWillReceiveMessage?(message: any): void; + /** + * The debug adapter has sent a Debug Adapter Protocol message to VS Code. + */ + onDidSendMessage?(message: any): void; + /** + * The debug adapter session is about to be stopped. + */ + onWillStopSession?(): void; + /** + * An error with the debug adapter has occured. + */ + onError?(error: Error): void; + /** + * The debug adapter has exited with the given exit code or signal. + */ + onExit?(code: number | undefined, signal: string | undefined): void; } export interface DebugAdapterTrackerFactory { @@ -543,6 +558,18 @@ declare module 'vscode' { // deprecated + export interface DebugAdapterTracker { + // VS Code -> Debug Adapter + startDebugAdapter?(): void; + toDebugAdapter?(message: any): void; + stopDebugAdapter?(): void; + + // Debug Adapter -> VS Code + fromDebugAdapter?(message: any): void; + debugAdapterError?(error: Error): void; + debugAdapterExit?(code?: number, signal?: string): void; + } + export interface DebugConfigurationProvider { /** * Deprecated, use DebugAdapterDescriptorFactory.provideDebugAdapter instead. diff --git a/src/vs/workbench/api/node/extHostDebugService.ts b/src/vs/workbench/api/node/extHostDebugService.ts index bb57ccecc6e209f4ba7ed27c2f01799445f268d1..b84110540c541fc88fd936f750dfe8d20bfa3cba 100644 --- a/src/vs/workbench/api/node/extHostDebugService.ts +++ b/src/vs/workbench/api/node/extHostDebugService.ts @@ -420,7 +420,7 @@ export class ExtHostDebugService implements ExtHostDebugServiceShape { da.onMessage(message => { if (tracker) { - tracker.fromDebugAdapter(message); + tracker.onDidSendMessage(message); } // DA -> VS Code @@ -430,19 +430,19 @@ export class ExtHostDebugService implements ExtHostDebugServiceShape { }); da.onError(err => { if (tracker) { - tracker.debugAdapterError(err); + tracker.onError(err); } this._debugServiceProxy.$acceptDAError(debugAdapterHandle, err.name, err.message, err.stack); }); da.onExit(code => { if (tracker) { - tracker.debugAdapterExit(code, null); + tracker.onExit(code, undefined); } this._debugServiceProxy.$acceptDAExit(debugAdapterHandle, code, null); }); if (tracker) { - tracker.startDebugAdapter(); + tracker.onWillStartSession(); } return da.startSession(); @@ -460,7 +460,7 @@ export class ExtHostDebugService implements ExtHostDebugServiceShape { const tracker = this._debugAdaptersTrackers.get(debugAdapterHandle); // TODO@AW: same handle? if (tracker) { - tracker.toDebugAdapter(message); + tracker.onWillReceiveMessage(message); } const da = this._debugAdapters.get(debugAdapterHandle); @@ -475,7 +475,7 @@ export class ExtHostDebugService implements ExtHostDebugServiceShape { const tracker = this._debugAdaptersTrackers.get(debugAdapterHandle); this._debugAdaptersTrackers.delete(debugAdapterHandle); if (tracker) { - tracker.stopDebugAdapter(); + tracker.onWillStopSession(); } const da = this._debugAdapters.get(debugAdapterHandle); @@ -929,28 +929,28 @@ class MultiTracker implements vscode.DebugAdapterTracker { constructor(private trackers: vscode.DebugAdapterTracker[]) { } - startDebugAdapter(): void { - this.trackers.forEach(t => t.startDebugAdapter ? t.startDebugAdapter() : void 0); + onWillStartSession(): void { + this.trackers.forEach(t => t.onWillStartSession ? t.onWillStartSession() : (t.startDebugAdapter ? t.startDebugAdapter() : void 0)); } - toDebugAdapter(message: any): void { - this.trackers.forEach(t => t.toDebugAdapter ? t.toDebugAdapter(message) : void 0); + onWillReceiveMessage(message: any): void { + this.trackers.forEach(t => t.onWillReceiveMessage ? t.onWillReceiveMessage(message) : (t.toDebugAdapter ? t.toDebugAdapter(message) : void 0)); } - fromDebugAdapter(message: any): void { - this.trackers.forEach(t => t.fromDebugAdapter ? t.fromDebugAdapter(message) : void 0); + onDidSendMessage(message: any): void { + this.trackers.forEach(t => t.onDidSendMessage ? t.onDidSendMessage(message) : (t.fromDebugAdapter ? t.fromDebugAdapter(message) : void 0)); } - debugAdapterError(error: Error): void { - this.trackers.forEach(t => t.debugAdapterError ? t.debugAdapterError(error) : void 0); + onWillStopSession(): void { + this.trackers.forEach(t => t.onWillStopSession ? t.onWillStopSession() : (t.stopDebugAdapter ? t.stopDebugAdapter() : void 0)); } - debugAdapterExit(code: number, signal: string): void { - this.trackers.forEach(t => t.debugAdapterExit ? t.debugAdapterExit(code, signal) : void 0); + onError(error: Error): void { + this.trackers.forEach(t => t.onError ? t.onError(error) : (t.debugAdapterError ? t.debugAdapterError(error) : void 0)); } - stopDebugAdapter(): void { - this.trackers.forEach(t => t.stopDebugAdapter ? t.stopDebugAdapter() : void 0); + onExit(code: number, signal: string): void { + this.trackers.forEach(t => t.onExit ? t.onExit(code, signal) : (t.debugAdapterExit ? t.debugAdapterExit(code, signal) : void 0)); } }