diff --git a/ivette/src/frama-c/server.ts b/ivette/src/frama-c/server.ts index 4220a8918ae6d0f81284131f6c723126abc63588..357becad04101e30018a349cbc1ce1ff63018988 100644 --- a/ivette/src/frama-c/server.ts +++ b/ivette/src/frama-c/server.ts @@ -618,6 +618,7 @@ class Signal { this.listen = false; this.sigon = this.sigon.bind(this); this.sigoff = _.debounce(this.sigoff.bind(this), 1000); + this.unplug = this.unplug.bind(this); } on(callback: any) { @@ -659,11 +660,15 @@ class Signal { } } } + + unplug() { + this.listen = false; + } } // --- Memo -const signals: any[] = []; +const signals: { [id: string]: Signal } = {}; function _signal(id: any) { let s = signals[id]; if (!s) { @@ -714,11 +719,16 @@ export function useSignal(id: string, callback: any) { // --- Server Synchro Dome.on(READY, () => { - _.forEach(signals, (s) => s.sigon()); + _.forEach(signals, (signal: Signal) => { + signal.sigon(); + }); }); Dome.on(SHUTDOWN, () => { - _.forEach(signals, (s) => s.sigoff.cancel()); + _.forEach(signals, (signal: Signal) => { + signal.unplug(); + // TODO: signal.sigoff.cancel(); + }); }); // --------------------------------------------------------------------------