Commit 94afd309 authored by Kurt B. Kaiser's avatar Kurt B. Kaiser

Move setting of ioready 'wait' earlier in call chain, to

rpc.SocketIO.main() and asyncreturn().  Improve comment.
parent b1fbf855
......@@ -7,11 +7,27 @@ What's New in IDLEfork 0.9 Alpha 3?
*Release date: xx-xxx-2003*
- Implemented the 'interrupt' extension module, which allows a subthread
to raise a KeyboardInterrupt in the main thread.
- Attempting to save the shell raised an error related to saving
breakpoints, which are not implemented in the shell
- Provide a correct message when 'exit' or 'quit' are entered at the
IDLE command prompt SF 695861
- Eliminate extra blank line in shell output caused by not flushing
stdout when user code ends with an unterminated print. SF 695861
- Moved responsibility for exception formatting (i.e. pruning IDLE internal
calls) out of rpc.py into the client and server.
- Exit IDLE cleanly even when doing subprocess I/O
- Handle subprocess interrupt in Windows with an RPC message.
- Calling Run will restart the subprocess even if user code is running.
SF RFE 661321
- Restart the subprocess if it terminates itself. (VPython programs do that)
......
......@@ -192,7 +192,7 @@ class SocketIO:
def asyncreturn(self, seq):
self.debug("asyncreturn:%d:call getresponse(): " % seq)
response = self.getresponse(seq)
response = self.getresponse(seq, wait=None)
self.debug(("asyncreturn:%d:response: " % seq), response)
return self.decoderesponse(response)
......@@ -211,17 +211,17 @@ class SocketIO:
def mainloop(self):
"""Listen on socket until I/O not ready or EOF
pollpacket() will loop looking for seq number None, which never
comes. The loop will exit when self.ioready() returns 0.
Main thread pollresponse() will loop looking for seq number None, which
never comes, and exit on EOFError.
"""
try:
self.getresponse(None)
self.getresponse(myseq=None, wait=None)
except EOFError:
pass
def getresponse(self, myseq):
response = self._getresponse(myseq)
def getresponse(self, myseq, wait):
response = self._getresponse(myseq, wait)
if response is not None:
how, what = response
if how == "OK":
......@@ -236,13 +236,13 @@ class SocketIO:
# XXX Check for other types -- not currently needed
return obj
def _getresponse(self, myseq):
def _getresponse(self, myseq, wait):
self.debug("_getresponse:myseq:", myseq)
if threading.currentThread() is self.mainthread:
# Main thread: does all reading of requests or responses
# Loop here, blocking each time until socket is ready.
while 1:
response = self.pollresponse(myseq, wait=None)
response = self.pollresponse(myseq, wait)
if response is not None:
return response
else:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment