diff --git a/IPython/html/static/services/kernels/js/kernel.js b/IPython/html/static/services/kernels/js/kernel.js
index 3574b8c..76bc9fa 100644
--- a/IPython/html/static/services/kernels/js/kernel.js
+++ b/IPython/html/static/services/kernels/js/kernel.js
@@ -21,9 +21,11 @@ define([
this.id = id;
this.name = name;
- this.shell_channel = null;
- this.iopub_channel = null;
- this.stdin_channel = null;
+ this.channels = {
+ 'shell': null,
+ 'iopub': null,
+ 'stdin': null
+ };
this.kernel_service_url = kernel_service_url;
this.kernel_url = utils.url_join_encode(this.kernel_service_url, this.id);
@@ -241,6 +243,7 @@ define([
Kernel.prototype._kernel_connected = function () {
var that = this;
+ console.log('Connected to kernel: ', this.id);
this.events.trigger('status_connected.Kernel');
this.kernel_info(function () {
that.events.trigger('status_idle.Kernel');
@@ -264,13 +267,13 @@ define([
this.stop_channels();
var ws_host_url = this.ws_url + this.kernel_url;
console.log("Starting WebSockets:", ws_host_url);
- this.shell_channel = new this.WebSocket(
+ this.channels.shell = new this.WebSocket(
this.ws_url + utils.url_join_encode(this.kernel_url, "shell")
);
- this.stdin_channel = new this.WebSocket(
+ this.channels.stdin = new this.WebSocket(
this.ws_url + utils.url_join_encode(this.kernel_url, "stdin")
);
- this.iopub_channel = new this.WebSocket(
+ this.channels.iopub = new this.WebSocket(
this.ws_url + utils.url_join_encode(this.kernel_url, "iopub")
);
@@ -300,23 +303,23 @@ define([
already_called_onclose = true;
that._ws_closed(ws_host_url, false);
};
- var channels = [this.shell_channel, this.iopub_channel, this.stdin_channel];
- for (var i=0; i < channels.length; i++) {
- channels[i].onopen = $.proxy(this._ws_opened, this);
- channels[i].onclose = ws_closed_early;
- channels[i].onerror = ws_error;
+
+ for (var c in this.channels) {
+ this.channels[c].onopen = $.proxy(this._ws_opened, this);
+ this.channels[c].onclose = ws_closed_early;
+ this.channels[c].onerror = ws_error;
}
// switch from early-close to late-close message after 1s
setTimeout(function() {
- for (var i=0; i < channels.length; i++) {
- if (channels[i] !== null) {
- channels[i].onclose = ws_closed_late;
+ for (var c in that.channels) {
+ if (that.channels[c] !== null) {
+ that.channels[c].onclose = ws_closed_late;
}
}
}, 1000);
- this.shell_channel.onmessage = $.proxy(this._handle_shell_reply, this);
- this.iopub_channel.onmessage = $.proxy(this._handle_iopub_message, this);
- this.stdin_channel.onmessage = $.proxy(this._handle_input_request, this);
+ this.channels.shell.onmessage = $.proxy(this._handle_shell_reply, this);
+ this.channels.iopub.onmessage = $.proxy(this._handle_iopub_message, this);
+ this.channels.stdin.onmessage = $.proxy(this._handle_input_request, this);
};
/**
@@ -332,8 +335,7 @@ define([
if (this.is_connected()) {
// all events ready, trigger started event.
- console.log('Connected to kernel: ', this.id);
- this.events.trigger('status_connected.Kernel', {kernel: this});
+ this._kernel_connected();
}
};
@@ -353,26 +355,24 @@ define([
* @method stop_channels
*/
Kernel.prototype.stop_channels = function () {
- var channels = [this.shell_channel, this.iopub_channel, this.stdin_channel];
- for (var i=0; i < channels.length; i++) {
- if ( channels[i] !== null ) {
- channels[i].onclose = null;
- channels[i].close();
+ for (var c in this.channels) {
+ if ( this.channels[c] !== null ) {
+ this.channels[c].onclose = null;
+ this.channels[c].close();
+ this.channels[c] = null;
}
}
- this.shell_channel = this.iopub_channel = this.stdin_channel = null;
};
// Main public methods.
Kernel.prototype.is_connected = function () {
- var channels = [this.shell_channel, this.iopub_channel, this.stdin_channel];
- for (var i=0; i < channels.length; i++) {
+ for (var c in this.channels) {
// if any channel is not ready, then we're not connected
- if (channels[i] === null) {
+ if (this.channels[c] === null) {
return false;
}
- if (channels[i].readyState !== WebSocket.OPEN) {
+ if (this.channels[c].readyState !== WebSocket.OPEN) {
return false;
}
}
@@ -385,7 +385,7 @@ define([
throw new Error("kernel is not connected");
}
var msg = this._get_msg(msg_type, content, metadata);
- this.shell_channel.send(JSON.stringify(msg));
+ this.channels.shell.send(JSON.stringify(msg));
this.set_callbacks_for_msg(msg.header.msg_id, callbacks);
return msg.header.msg_id;
};
@@ -532,7 +532,7 @@ define([
};
this.events.trigger('input_reply.Kernel', {kernel: this, content:content});
var msg = this._get_msg("input_reply", content);
- this.stdin_channel.send(JSON.stringify(msg));
+ this.channels.stdin.send(JSON.stringify(msg));
return msg.header.msg_id;
};