Selaa lähdekoodia

IService extends IDisposable

Johan Mabille 5 vuotta sitten
vanhempi
commit
4c24787a23
4 muutettua tiedostoa jossa 16 lisäystä ja 3 poistoa
  1. 1 0
      src/debugger.ts
  2. 0 1
      src/index.ts
  3. 13 0
      src/service.ts
  4. 2 2
      src/tokens.ts

+ 1 - 0
src/debugger.ts

@@ -57,6 +57,7 @@ export class Debugger extends SplitPanel {
       return;
     }
     this.model.dispose();
+    this.service.dispose();
     super.dispose();
   }
 

+ 0 - 1
src/index.ts

@@ -468,7 +468,6 @@ const main: JupyterFrontEndPlugin<IDebugger> = {
         }
       }
     );
-
     return proxy;
   }
 };

+ 13 - 0
src/service.ts

@@ -21,6 +21,18 @@ export class DebugService implements IDebugger.IService {
     this._model = debuggerModel;
   }
 
+  dispose(): void {
+    if (this.isDisposed) {
+      return;
+    }
+    this._isDisposed = true;
+    Signal.clearData(this);
+  }
+
+  get isDisposed(): boolean {
+    return this._isDisposed;
+  }
+
   set session(session: IDebugger.ISession) {
     if (this._session === session) {
       return;
@@ -211,6 +223,7 @@ export class DebugService implements IDebugger.IService {
     return 1;
   }
 
+  private _isDisposed: boolean = false;
   private _session: IDebugger.ISession;
   private _sessionChanged = new Signal<IDebugger.IService, IDebugger.ISession>(
     this

+ 2 - 2
src/tokens.ts

@@ -13,7 +13,7 @@ import { Session } from '@jupyterlab/services';
 
 import { Token } from '@phosphor/coreutils';
 
-import { IObservableDisposable } from '@phosphor/disposable';
+import { IDisposable, IObservableDisposable } from '@phosphor/disposable';
 
 import { ISignal } from '@phosphor/signaling';
 
@@ -102,7 +102,7 @@ export namespace IDebugger {
     eventMessage: ISignal<IDebugger.ISession, IDebugger.ISession.Event>;
   }
 
-  export interface IService {
+  export interface IService extends IDisposable {
     /**
      * The API debugger session to connect to a debugger
      */