Move setting of ioready 'wait' earlier in call chain, to
rpc.SocketIO.main() and asyncreturn(). Improve comment.
This commit is contained in:
parent
b1fbf855a3
commit
94afd3095e
|
@ -7,11 +7,27 @@ What's New in IDLEfork 0.9 Alpha 3?
|
||||||
|
|
||||||
*Release date: xx-xxx-2003*
|
*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
|
- Exit IDLE cleanly even when doing subprocess I/O
|
||||||
|
|
||||||
- Handle subprocess interrupt in Windows with an RPC message.
|
- Handle subprocess interrupt in Windows with an RPC message.
|
||||||
|
|
||||||
- Calling Run will restart the subprocess even if user code is running.
|
- 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)
|
- Restart the subprocess if it terminates itself. (VPython programs do that)
|
||||||
|
|
||||||
|
|
|
@ -192,7 +192,7 @@ class SocketIO:
|
||||||
|
|
||||||
def asyncreturn(self, seq):
|
def asyncreturn(self, seq):
|
||||||
self.debug("asyncreturn:%d:call getresponse(): " % 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)
|
self.debug(("asyncreturn:%d:response: " % seq), response)
|
||||||
return self.decoderesponse(response)
|
return self.decoderesponse(response)
|
||||||
|
|
||||||
|
@ -211,17 +211,17 @@ class SocketIO:
|
||||||
def mainloop(self):
|
def mainloop(self):
|
||||||
"""Listen on socket until I/O not ready or EOF
|
"""Listen on socket until I/O not ready or EOF
|
||||||
|
|
||||||
pollpacket() will loop looking for seq number None, which never
|
Main thread pollresponse() will loop looking for seq number None, which
|
||||||
comes. The loop will exit when self.ioready() returns 0.
|
never comes, and exit on EOFError.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
self.getresponse(None)
|
self.getresponse(myseq=None, wait=None)
|
||||||
except EOFError:
|
except EOFError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def getresponse(self, myseq):
|
def getresponse(self, myseq, wait):
|
||||||
response = self._getresponse(myseq)
|
response = self._getresponse(myseq, wait)
|
||||||
if response is not None:
|
if response is not None:
|
||||||
how, what = response
|
how, what = response
|
||||||
if how == "OK":
|
if how == "OK":
|
||||||
|
@ -236,13 +236,13 @@ class SocketIO:
|
||||||
# XXX Check for other types -- not currently needed
|
# XXX Check for other types -- not currently needed
|
||||||
return obj
|
return obj
|
||||||
|
|
||||||
def _getresponse(self, myseq):
|
def _getresponse(self, myseq, wait):
|
||||||
self.debug("_getresponse:myseq:", myseq)
|
self.debug("_getresponse:myseq:", myseq)
|
||||||
if threading.currentThread() is self.mainthread:
|
if threading.currentThread() is self.mainthread:
|
||||||
# Main thread: does all reading of requests or responses
|
# Main thread: does all reading of requests or responses
|
||||||
# Loop here, blocking each time until socket is ready.
|
# Loop here, blocking each time until socket is ready.
|
||||||
while 1:
|
while 1:
|
||||||
response = self.pollresponse(myseq, wait=None)
|
response = self.pollresponse(myseq, wait)
|
||||||
if response is not None:
|
if response is not None:
|
||||||
return response
|
return response
|
||||||
else:
|
else:
|
||||||
|
|
Loading…
Reference in New Issue