From 5f603a88d9f21429a9393c0dd13f043f9034cb75 Mon Sep 17 00:00:00 2001 From: MDMCK10 <21245760+MDMCK10@users.noreply.github.com> Date: Sat, 11 Feb 2023 20:52:25 +0100 Subject: [PATCH] Previous commit didn't work, let's try it again. --- src/QEMUVM.ts | 12 ------------ src/QMPClient.ts | 17 +++++++++++++++-- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/src/QEMUVM.ts b/src/QEMUVM.ts index 3dffc45..82a9324 100644 --- a/src/QEMUVM.ts +++ b/src/QEMUVM.ts @@ -55,10 +55,6 @@ export default class QEMUVM extends EventEmitter { this.processRestartErrorLevel = 0; this.expectedExit = false; this.qmpClient = new QMPClient(this.qmpSock, this.qmpType); - this.qmpClient.on('qmpshutdown', () => { - console.log("[INFO] QEMU requested shutdown, restarting..."); - this.Resume(); - }); this.qmpClient.on('connected', () => this.qmpConnected()); this.qmpClient.on('close', () => this.qmpClosed()); } @@ -217,14 +213,6 @@ export default class QEMUVM extends EventEmitter { this.Start(); } - Resume() : Promise { - return new Promise(async (res, rej) => { - if (this.expectedExit) {res(); return;} - await this.qmpClient.execute({ "execute": "cont" }); - res(); - }); - } - Stop() : Promise { return new Promise(async (res, rej) => { if (this.expectedExit) {res(); return;} diff --git a/src/QMPClient.ts b/src/QMPClient.ts index 3f35884..6c7625d 100644 --- a/src/QMPClient.ts +++ b/src/QMPClient.ts @@ -68,10 +68,16 @@ export default class QMPClient extends EventEmitter { else if(msg.event !== undefined) { switch(msg.event) { case "STOP": + { + console.log("[INFO] Resetting QEMU..."); + this.reboot(); + break; + } case "RESET": { - this.emit("qmpshutdown"); - break + console.log("[INFO] QEMU reset event occurred"); + this.resume(); + break; }; default: { this.emit("qmpreturn", ''); @@ -104,6 +110,13 @@ export default class QMPClient extends EventEmitter { await this.execute({"execute": "system_reset"}); } + async resume() { + if (!this.connected) + return; + + await this.execute({"execute": "cont"}); + } + async ExitQEMU() { if (!this.connected) return;