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

rpc.SocketIO.main() and asyncreturn().  Improve comment.
This commit is contained in:
Kurt B. Kaiser 2003-03-12 20:52:00 +00:00
parent b1fbf855a3
commit 94afd3095e
2 changed files with 24 additions and 8 deletions

View File

@ -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)

View File

@ -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: