##// END OF EJS Templates
little bug fixed in kernelmanager's queues
little bug fixed in kernelmanager's queues

File last commit:

r5582:9d266d4b
r5582:9d266d4b
Show More
kernelmanager.py
91 lines | 2.8 KiB | text/x-python | PythonLexer
Omar Andres Zapata Mesa
basic kernelmanager and frontend wrote, support indentation but it dont run code yet
r5578 # -*- coding: utf-8 -*-
from Queue import Queue
from IPython.zmq.session import Session, Message, extract_header
from IPython.utils.traitlets import Type, HasTraits, TraitType
from IPython.zmq.kernelmanager import KernelManager, SubSocketChannel, \
XReqSocketChannel, RepSocketChannel, HBSocketChannel
MetaHasTraits = type(HasTraits)
class SubSocketChannel2p(SubSocketChannel):
#---------------------------------------------------------------------------
# 'SubSocketChannel' interface
#---------------------------------------------------------------------------
_msg = None
queue = Queue(-1)
def call_handlers(self, msg):
self.queue.put(Message(msg))
def get_msg(self):
Omar Andres Zapata Mesa
little bug fixed in kernelmanager's queues
r5582 return self.queue.get()
Omar Andres Zapata Mesa
basic kernelmanager and frontend wrote, support indentation but it dont run code yet
r5578
def was_called(self):
Omar Andres Zapata Mesa
little bug fixed in kernelmanager's queues
r5582 return not self.queue.empty()
Omar Andres Zapata Mesa
basic kernelmanager and frontend wrote, support indentation but it dont run code yet
r5578
class XReqSocketChannel2p(XReqSocketChannel):
#---------------------------------------------------------------------------
# 'XReqSocketChannel' interface
#---------------------------------------------------------------------------
_msg = None
_called = False
Omar Andres Zapata Mesa
completer not working fine
r5581 queue = Queue(-1)
Omar Andres Zapata Mesa
basic kernelmanager and frontend wrote, support indentation but it dont run code yet
r5578 def call_handlers(self, msg):
Omar Andres Zapata Mesa
completer not working fine
r5581 self.queue.put(Message(msg))
Omar Andres Zapata Mesa
basic kernelmanager and frontend wrote, support indentation but it dont run code yet
r5578
def get_msg(self):
Omar Andres Zapata Mesa
little bug fixed in kernelmanager's queues
r5582 return self.queue.get()
Omar Andres Zapata Mesa
basic kernelmanager and frontend wrote, support indentation but it dont run code yet
r5578
def was_called(self):
Omar Andres Zapata Mesa
little bug fixed in kernelmanager's queues
r5582 return not self.queue.empty()
Omar Andres Zapata Mesa
basic kernelmanager and frontend wrote, support indentation but it dont run code yet
r5578
class RepSocketChannel2p(RepSocketChannel):
#---------------------------------------------------------------------------
# 'XReqSocketChannel' interface
#---------------------------------------------------------------------------
_msg = None
_called = False
def call_handlers(self, msg):
self._called = True
self._msg = Message(msg)
def get_msg(self):
self._called = False
return self._msg
def was_called(self):
return self._called
class HBSocketChannel2p(HBSocketChannel):
#---------------------------------------------------------------------------
# 'XReqSocketChannel' interface
#---------------------------------------------------------------------------
_msg = None
_called = False
def call_handlers(self, msg):
self._called = True
self._msg = Message(msg)
def get_msg(self):
self._called = False
return self._msg
def was_called(self):
return self._called
class KernelManager2p(KernelManager):
sub_channel_class = Type(SubSocketChannel2p)
xreq_channel_class = Type(XReqSocketChannel2p)
rep_channel_class = Type(RepSocketChannel2p)
hb_channel_class = Type(HBSocketChannel2p)
def start_kernel(self, *args, **kw):
""" Reimplemented for proper heartbeat management.
"""
if self._xreq_channel is not None:
self._xreq_channel.reset_first_reply()
super(KernelManager2p, self).start_kernel(*args, **kw)