diff --git a/IPython/frontend/html/notebook/handlers.py b/IPython/frontend/html/notebook/handlers.py
index 2d722fd..f472197 100644
--- a/IPython/frontend/html/notebook/handlers.py
+++ b/IPython/frontend/html/notebook/handlers.py
@@ -1,17 +1,22 @@
+"""Tornado handlers for the notebook."""
+
+#-----------------------------------------------------------------------------
+# Imports
+#-----------------------------------------------------------------------------
+
import datetime
import json
import logging
import os
import urllib
-import uuid
-from Queue import Queue
from tornado import web
from tornado import websocket
+#-----------------------------------------------------------------------------
+# Handlers
+#-----------------------------------------------------------------------------
-_kernel_id_regex = r"(?P\w+-\w+-\w+-\w+-\w+)"
-_kernel_action_regex = r"(?Prestart|interrupt)"
class MainHandler(web.RequestHandler):
def get(self):
@@ -39,58 +44,6 @@ class KernelActionHandler(web.RequestHandler):
self.write(json.dumps(new_kernel_id))
-class ZMQStreamRouter(object):
-
- def __init__(self, zmq_stream):
- self.zmq_stream = zmq_stream
- self._clients = {}
- self.zmq_stream.on_recv(self._on_zmq_reply)
-
- def register_client(self, client):
- client_id = uuid.uuid4()
- self._clients[client_id] = client
- return client_id
-
- def unregister_client(self, client_id):
- del self._clients[client_id]
-
- def copy_clients(self, router):
- # Copy the clients of another router.
- for client_id, client in router._clients.items():
- client.router = self
- self._clients[client_id] = client
-
-
-class IOPubStreamRouter(ZMQStreamRouter):
-
- def _on_zmq_reply(self, msg_list):
- for client_id, client in self._clients.items():
- for msg in msg_list:
- client.write_message(msg)
-
- def forward_unicode(self, client_id, msg):
- # This is a SUB stream that we should never write to.
- pass
-
-
-class ShellStreamRouter(ZMQStreamRouter):
-
- def __init__(self, zmq_stream):
- ZMQStreamRouter.__init__(self, zmq_stream)
- self._request_queue = Queue()
-
- def _on_zmq_reply(self, msg_list):
- client_id = self._request_queue.get(block=False)
- client = self._clients.get(client_id)
- if client is not None:
- for msg in msg_list:
- client.write_message(msg)
-
- def forward_unicode(self, client_id, msg):
- self._request_queue.put(client_id)
- self.zmq_stream.send_unicode(msg)
-
-
class ZMQStreamHandler(websocket.WebSocketHandler):
def initialize(self, stream_name):
diff --git a/IPython/frontend/html/notebook/kernelmanager.py b/IPython/frontend/html/notebook/kernelmanager.py
index 58b29e1..6afc6bd 100644
--- a/IPython/frontend/html/notebook/kernelmanager.py
+++ b/IPython/frontend/html/notebook/kernelmanager.py
@@ -4,7 +4,6 @@
# Imports
#-----------------------------------------------------------------------------
-import logging
import signal
import sys
import uuid
@@ -13,7 +12,7 @@ import zmq
from IPython.config.configurable import LoggingConfigurable
from IPython.zmq.ipkernel import launch_kernel
-from IPython.utils.traitlets import Instance, Dict, Unicode
+from IPython.utils.traitlets import Instance, Dict
#-----------------------------------------------------------------------------
# Classes
diff --git a/IPython/frontend/html/notebook/notebookapp.py b/IPython/frontend/html/notebook/notebookapp.py
index cf419fc..7bc7ed6 100644
--- a/IPython/frontend/html/notebook/notebookapp.py
+++ b/IPython/frontend/html/notebook/notebookapp.py
@@ -99,8 +99,8 @@ class NotebookWebApplication(web.Application):
self._session_dict[kernel_id] = sm
iopub_stream = sm.get_iopub_stream()
shell_stream = sm.get_shell_stream()
- iopub_router = IOPubStreamRouter(iopub_stream)
- shell_router = ShellStreamRouter(shell_stream)
+ iopub_router = IOPubStreamRouter(iopub_stream, sm.session)
+ shell_router = ShellStreamRouter(shell_stream, sm.session)
self._routers[(kernel_id, 'iopub')] = iopub_router
self._routers[(kernel_id, 'shell')] = shell_router
@@ -139,6 +139,8 @@ class NotebookWebApplication(web.Application):
router = self._routers[(kernel_id, stream_name)]
return router
+
+
#-----------------------------------------------------------------------------
# Aliases and Flags
#-----------------------------------------------------------------------------
diff --git a/IPython/frontend/html/notebook/routers.py b/IPython/frontend/html/notebook/routers.py
index 2e5dd47..6bfaa89 100644
--- a/IPython/frontend/html/notebook/routers.py
+++ b/IPython/frontend/html/notebook/routers.py
@@ -1,11 +1,12 @@
import uuid
from Queue import Queue
-
+import json
class ZMQStreamRouter(object):
- def __init__(self, zmq_stream):
+ def __init__(self, zmq_stream, session):
self.zmq_stream = zmq_stream
+ self.session = session
self._clients = {}
self.zmq_stream.on_recv(self._on_zmq_reply)
@@ -29,6 +30,7 @@ class IOPubStreamRouter(ZMQStreamRouter):
def _on_zmq_reply(self, msg_list):
for client_id, client in self._clients.items():
for msg in msg_list:
+ print "Got message: ", msg
client.write_message(msg)
def forward_unicode(self, client_id, msg):
@@ -38,8 +40,8 @@ class IOPubStreamRouter(ZMQStreamRouter):
class ShellStreamRouter(ZMQStreamRouter):
- def __init__(self, zmq_stream):
- ZMQStreamRouter.__init__(self, zmq_stream)
+ def __init__(self, zmq_stream, session):
+ ZMQStreamRouter.__init__(self, zmq_stream, session)
self._request_queue = Queue()
def _on_zmq_reply(self, msg_list):
@@ -50,8 +52,7 @@ class ShellStreamRouter(ZMQStreamRouter):
client.write_message(msg)
def forward_unicode(self, client_id, msg):
- self._request_queue.put(client_id)
- self.zmq_stream.send_unicode(msg)
-
-
+ print "Inbound message: ", msg
+ self._request_queue.put(client_id)
+ self.session.send(self.zmq_stream, msg)