Skip to content
This repository has been archived by the owner on Jan 26, 2022. It is now read-only.

Commit

Permalink
Remove frames from service, fetch scopes on change
Browse files Browse the repository at this point in the history
  • Loading branch information
jtpio committed Nov 14, 2019
1 parent 8711f4d commit c98b7ed
Showing 1 changed file with 17 additions and 33 deletions.
50 changes: 17 additions & 33 deletions src/service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@ export class DebugService implements IDebugger {
} else if (event.event === 'continued') {
this._stoppedThreads.delete(event.body.threadId);
this.clearModel();
this.clearSignals();
}
this._eventMessage.emit(event);
});
Expand Down Expand Up @@ -350,37 +351,21 @@ export class DebugService implements IDebugger {
}

getAllFrames = async () => {
const stackFrames = await this.getFrames(this.currentThread());

stackFrames.forEach(async (frame, index) => {
const scopes = await this.getScopes(frame);
const variables = await this.getVariables(scopes);
const values = this.convertScope(scopes, variables);
this.frames.push({
id: frame.id,
scopes: values
});
if (index === 0) {
this._model.variablesModel.scopes = values;
}
});

if (stackFrames) {
this._model.callstackModel.frames = stackFrames;
}

this._model.callstackModel.currentFrameChanged.connect(this.onChangeFrame);
this._model.variablesModel.variableExpanded.connect(this.getVariable);

const stackFrames = await this.getFrames(this.currentThread());
this._model.callstackModel.frames = stackFrames;
};

onChangeFrame = (_: Callstack.Model, update: Callstack.IFrame) => {
if (!update) {
onChangeFrame = async (_: Callstack.Model, frame: Callstack.IFrame) => {
if (!frame) {
return;
}
const frame = this.frames.find(ele => ele.id === update.id);
if (frame && frame.scopes) {
this._model.variablesModel.scopes = frame.scopes;
}
const scopes = await this.getScopes(frame);
const variables = await this.getVariables(scopes);
const variableScopes = this.convertScope(scopes, variables);
this._model.variablesModel.scopes = variableScopes;
};

dumpCell = async (code: string) => {
Expand Down Expand Up @@ -479,6 +464,13 @@ export class DebugService implements IDebugger {
this._model.variablesModel.scopes = [];
}

private clearSignals() {
this._model.callstackModel.currentFrameChanged.disconnect(
this.onChangeFrame
);
this._model.variablesModel.variableExpanded.disconnect(this.getVariable);
}

private currentThread(): number {
// TODO: ask the model for the current thread ID
return 1;
Expand Down Expand Up @@ -510,18 +502,10 @@ export class DebugService implements IDebugger {
private _tmpFilePrefix: string;
private _tmpFileSuffix: string;

// TODO: remove frames from the service
private frames: Frame[] = [];

// TODO: move this in model
private _stoppedThreads = new Set();
}

export type Frame = {
id: number;
scopes: Variables.IScope[];
};

namespace Private {
export function toSourceBreakpoints(breakpoints: Breakpoints.IBreakpoint[]) {
return breakpoints.map(breakpoint => {
Expand Down

0 comments on commit c98b7ed

Please sign in to comment.