##// END OF EJS Templates
Fixed several bugs involving the insertion of new lines. Pressing Enter in the ConsoleWidget now works as expected.
Fixed several bugs involving the insertion of new lines. Pressing Enter in the ConsoleWidget now works as expected.

File last commit:

r2693:a6cdb64c
r2896:d807b505
Show More
blockingkernelmanager.py
43 lines | 1.2 KiB | text/x-python | PythonLexer
/ IPython / zmq / blockingkernelmanager.py
from kernelmanager import SubSocketChannel
from Queue import Queue, Empty
class MsgNotReady(Exception):
pass
class BlockingSubSocketChannel(SubSocketChannel):
def __init__(self, context, session, address=None):
super(BlockingSubSocketChannel, self).__init__(context, session, address)
self._in_queue = Queue()
def call_handlers(self, msg):
self._in_queue.put(msg)
def msg_ready(self):
"""Is there a message that has been received?"""
if self._in_queue.qsize() == 0:
return False
else:
return True
def get_msg(self, block=True, timeout=None):
"""Get a message if there is one that is ready."""
try:
msg = self.in_queue.get(block, timeout)
except Empty:
raise MsgNotReady('No message has been received.')
else:
return msg
def get_msgs(self):
"""Get all messages that are currently ready."""
msgs = []
while True:
try:
msg = self.get_msg(block=False)
except MsgNotReady:
break
else:
msgs.append(msg)
return msgs