##// END OF EJS Templates
little bug fixed in kernelmanager's queues
Omar Andres Zapata Mesa -
Show More
@@ -1,92 +1,92 b''
1 # -*- coding: utf-8 -*-
1 # -*- coding: utf-8 -*-
2
2
3 from Queue import Queue
3 from Queue import Queue
4 from IPython.zmq.session import Session, Message, extract_header
4 from IPython.zmq.session import Session, Message, extract_header
5 from IPython.utils.traitlets import Type, HasTraits, TraitType
5 from IPython.utils.traitlets import Type, HasTraits, TraitType
6 from IPython.zmq.kernelmanager import KernelManager, SubSocketChannel, \
6 from IPython.zmq.kernelmanager import KernelManager, SubSocketChannel, \
7 XReqSocketChannel, RepSocketChannel, HBSocketChannel
7 XReqSocketChannel, RepSocketChannel, HBSocketChannel
8 MetaHasTraits = type(HasTraits)
8 MetaHasTraits = type(HasTraits)
9
9
10
10
11 class SubSocketChannel2p(SubSocketChannel):
11 class SubSocketChannel2p(SubSocketChannel):
12 #---------------------------------------------------------------------------
12 #---------------------------------------------------------------------------
13 # 'SubSocketChannel' interface
13 # 'SubSocketChannel' interface
14 #---------------------------------------------------------------------------
14 #---------------------------------------------------------------------------
15 _msg = None
15 _msg = None
16 queue = Queue(-1)
16 queue = Queue(-1)
17 def call_handlers(self, msg):
17 def call_handlers(self, msg):
18 self.queue.put(Message(msg))
18 self.queue.put(Message(msg))
19
19
20 def get_msg(self):
20 def get_msg(self):
21 return self.queue.get(timeout=0.1)
21 return self.queue.get()
22
22
23 def was_called(self):
23 def was_called(self):
24 return self.queue.not_empty()
24 return not self.queue.empty()
25
25
26 class XReqSocketChannel2p(XReqSocketChannel):
26 class XReqSocketChannel2p(XReqSocketChannel):
27 #---------------------------------------------------------------------------
27 #---------------------------------------------------------------------------
28 # 'XReqSocketChannel' interface
28 # 'XReqSocketChannel' interface
29 #---------------------------------------------------------------------------
29 #---------------------------------------------------------------------------
30 _msg = None
30 _msg = None
31 _called = False
31 _called = False
32 queue = Queue(-1)
32 queue = Queue(-1)
33 def call_handlers(self, msg):
33 def call_handlers(self, msg):
34 self.queue.put(Message(msg))
34 self.queue.put(Message(msg))
35
35
36 def get_msg(self):
36 def get_msg(self):
37 return self.queue.get(timeout=0.1)
37 return self.queue.get()
38
38
39 def was_called(self):
39 def was_called(self):
40 return self.queue.not_empty()
40 return not self.queue.empty()
41
41
42 class RepSocketChannel2p(RepSocketChannel):
42 class RepSocketChannel2p(RepSocketChannel):
43 #---------------------------------------------------------------------------
43 #---------------------------------------------------------------------------
44 # 'XReqSocketChannel' interface
44 # 'XReqSocketChannel' interface
45 #---------------------------------------------------------------------------
45 #---------------------------------------------------------------------------
46 _msg = None
46 _msg = None
47 _called = False
47 _called = False
48 def call_handlers(self, msg):
48 def call_handlers(self, msg):
49 self._called = True
49 self._called = True
50 self._msg = Message(msg)
50 self._msg = Message(msg)
51
51
52 def get_msg(self):
52 def get_msg(self):
53 self._called = False
53 self._called = False
54 return self._msg
54 return self._msg
55
55
56 def was_called(self):
56 def was_called(self):
57 return self._called
57 return self._called
58
58
59 class HBSocketChannel2p(HBSocketChannel):
59 class HBSocketChannel2p(HBSocketChannel):
60 #---------------------------------------------------------------------------
60 #---------------------------------------------------------------------------
61 # 'XReqSocketChannel' interface
61 # 'XReqSocketChannel' interface
62 #---------------------------------------------------------------------------
62 #---------------------------------------------------------------------------
63 _msg = None
63 _msg = None
64 _called = False
64 _called = False
65 def call_handlers(self, msg):
65 def call_handlers(self, msg):
66 self._called = True
66 self._called = True
67 self._msg = Message(msg)
67 self._msg = Message(msg)
68
68
69 def get_msg(self):
69 def get_msg(self):
70 self._called = False
70 self._called = False
71 return self._msg
71 return self._msg
72
72
73 def was_called(self):
73 def was_called(self):
74 return self._called
74 return self._called
75
75
76 class KernelManager2p(KernelManager):
76 class KernelManager2p(KernelManager):
77 sub_channel_class = Type(SubSocketChannel2p)
77 sub_channel_class = Type(SubSocketChannel2p)
78 xreq_channel_class = Type(XReqSocketChannel2p)
78 xreq_channel_class = Type(XReqSocketChannel2p)
79 rep_channel_class = Type(RepSocketChannel2p)
79 rep_channel_class = Type(RepSocketChannel2p)
80 hb_channel_class = Type(HBSocketChannel2p)
80 hb_channel_class = Type(HBSocketChannel2p)
81
81
82 def start_kernel(self, *args, **kw):
82 def start_kernel(self, *args, **kw):
83 """ Reimplemented for proper heartbeat management.
83 """ Reimplemented for proper heartbeat management.
84 """
84 """
85 if self._xreq_channel is not None:
85 if self._xreq_channel is not None:
86 self._xreq_channel.reset_first_reply()
86 self._xreq_channel.reset_first_reply()
87 super(KernelManager2p, self).start_kernel(*args, **kw)
87 super(KernelManager2p, self).start_kernel(*args, **kw)
88
88
89
89
90
90
91
91
92 No newline at end of file
92
General Comments 0
You need to be logged in to leave comments. Login now