Previous commit didn't work, let's try it again.
This commit is contained in:
@@ -55,10 +55,6 @@ export default class QEMUVM extends EventEmitter {
|
|||||||
this.processRestartErrorLevel = 0;
|
this.processRestartErrorLevel = 0;
|
||||||
this.expectedExit = false;
|
this.expectedExit = false;
|
||||||
this.qmpClient = new QMPClient(this.qmpSock, this.qmpType);
|
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('connected', () => this.qmpConnected());
|
||||||
this.qmpClient.on('close', () => this.qmpClosed());
|
this.qmpClient.on('close', () => this.qmpClosed());
|
||||||
}
|
}
|
||||||
@@ -217,14 +213,6 @@ export default class QEMUVM extends EventEmitter {
|
|||||||
this.Start();
|
this.Start();
|
||||||
}
|
}
|
||||||
|
|
||||||
Resume() : Promise<void> {
|
|
||||||
return new Promise(async (res, rej) => {
|
|
||||||
if (this.expectedExit) {res(); return;}
|
|
||||||
await this.qmpClient.execute({ "execute": "cont" });
|
|
||||||
res();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
Stop() : Promise<void> {
|
Stop() : Promise<void> {
|
||||||
return new Promise<void>(async (res, rej) => {
|
return new Promise<void>(async (res, rej) => {
|
||||||
if (this.expectedExit) {res(); return;}
|
if (this.expectedExit) {res(); return;}
|
||||||
|
|||||||
@@ -68,10 +68,16 @@ export default class QMPClient extends EventEmitter {
|
|||||||
else if(msg.event !== undefined) {
|
else if(msg.event !== undefined) {
|
||||||
switch(msg.event) {
|
switch(msg.event) {
|
||||||
case "STOP":
|
case "STOP":
|
||||||
|
{
|
||||||
|
console.log("[INFO] Resetting QEMU...");
|
||||||
|
this.reboot();
|
||||||
|
break;
|
||||||
|
}
|
||||||
case "RESET":
|
case "RESET":
|
||||||
{
|
{
|
||||||
this.emit("qmpshutdown");
|
console.log("[INFO] QEMU reset event occurred");
|
||||||
break
|
this.resume();
|
||||||
|
break;
|
||||||
};
|
};
|
||||||
default: {
|
default: {
|
||||||
this.emit("qmpreturn", '');
|
this.emit("qmpreturn", '');
|
||||||
@@ -104,6 +110,13 @@ export default class QMPClient extends EventEmitter {
|
|||||||
await this.execute({"execute": "system_reset"});
|
await this.execute({"execute": "system_reset"});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async resume() {
|
||||||
|
if (!this.connected)
|
||||||
|
return;
|
||||||
|
|
||||||
|
await this.execute({"execute": "cont"});
|
||||||
|
}
|
||||||
|
|
||||||
async ExitQEMU() {
|
async ExitQEMU() {
|
||||||
if (!this.connected)
|
if (!this.connected)
|
||||||
return;
|
return;
|
||||||
|
|||||||
Reference in New Issue
Block a user