##// END OF EJS Templates
Added initial draft of blockingkernelmanager.py.
Brian Granger -
Show More
@@ -0,0 +1,44 b''
1 from kernelmanager import SubSocketChannel
2 from Queue import Queue, Empty
3
4
5 class MsgNotReady(Exception):
6 pass
7
8
9 class BlockingSubSocketChannel(SubSocketChannel):
10
11 def __init__(self, context, session, address=None):
12 super(BlockingSubSocketChannel, self).__init__(context, session, address)
13 self._in_queue = Queue()
14
15 def call_handlers(self, msg):
16 self._in_queue.put(msg)
17
18 def msg_ready(self):
19 """Is there a message that has been received?"""
20 if self._in_queue.qsize() == 0:
21 return False
22 else:
23 return True
24
25 def get_msg(self, block=True, timeout=None):
26 """Get a message if there is one that is ready."""
27 try:
28 msg = self.in_queue.get(block, timeout)
29 except Empty:
30 raise MsgNotReady('No message has been received.')
31 else:
32 return msg
33
34 def get_msgs(self):
35 """Get all messages that are currently ready."""
36 msgs = []
37 while True:
38 try:
39 msg = self.get_msg(block=False)
40 except MsgNotReady:
41 break
42 else:
43 msgs.append(msg)
44 return msgs No newline at end of file
General Comments 0
You need to be logged in to leave comments. Login now