Skip to content

Commit

Permalink
kernel: Handle is_complete_request
Browse files Browse the repository at this point in the history
* Implemented `is_complete_request` handler using `new vm.Script(code)`.

Fixes #97
  • Loading branch information
n-riesco committed Mar 1, 2017
1 parent c53ce65 commit 266e8aa
Show file tree
Hide file tree
Showing 2 changed files with 100 additions and 0 deletions.
33 changes: 33 additions & 0 deletions lib/kernel.js
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
var console = require("console");
var fs = require("fs");
var path = require("path");
var vm = require("vm");

var Kernel = require("jp-kernel");

Expand Down Expand Up @@ -67,6 +68,38 @@ log = global.DEBUG ? doLog : dontLog;
// Start kernel
var kernel = new Kernel(config);

// WORKAROUND: Fixes https://github.com/n-riesco/ijavascript/issues/97
kernel.handlers.is_complete_request = function is_complete_request(request) {
request.respond(this.iopubSocket, 'status', {
execution_state: 'busy'
});

var content;
try {
new vm.Script(request.content.code);
content = {
status: "complete",
};
} catch (err) {
content = {
status: "incomplete",
indent: "",
};
}

request.respond(
this.shellSocket,
"is_complete_reply",
content,
{},
this.protocolVersion
);

request.respond(this.iopubSocket, 'status', {
execution_state: 'idle'
});
};

// Interpret a SIGINT signal as a request to interrupt the kernel
process.on("SIGINT", function() {
log("Interrupting kernel");
Expand Down
67 changes: 67 additions & 0 deletions test/messages_v5.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,26 @@
[{
"description": "is_complete_request: console.log()",
"request": {
"shell": {
"header": {
"msg_type": "is_complete_request"
},
"content": {
"code": "console.log()"
}
}
},
"responses": [{
"shell": {
"header": {
"msg_type": "is_complete_reply"
},
"content": {
"status": "complete"
}
}
}]
}, {
"description": "is_complete_request: console.log(",
"request": {
"shell": {
Expand All @@ -21,6 +43,51 @@
}
}
}]
}, {
"description": "is_complete_request: while(true) {}",
"request": {
"shell": {
"header": {
"msg_type": "is_complete_request"
},
"content": {
"code": "while(true) {}"
}
}
},
"responses": [{
"shell": {
"header": {
"msg_type": "is_complete_reply"
},
"content": {
"status": "complete"
}
}
}]
}, {
"description": "is_complete_request: while(true)",
"request": {
"shell": {
"header": {
"msg_type": "is_complete_request"
},
"content": {
"code": "while(true)"
}
}
},
"responses": [{
"shell": {
"header": {
"msg_type": "is_complete_reply"
},
"content": {
"status": "incomplete",
"indent": ""
}
}
}]
}, {
"description": "execute_request: 'Hello, World!'",
"request": {
Expand Down

0 comments on commit 266e8aa

Please sign in to comment.