DebugClients/Python/DebugClientBase.py

changeset 6588
a77723d4060f
parent 6060
57365172e94f
child 6645
ad476851d7e0
equal deleted inserted replaced
6587:a04952159050 6588:a77723d4060f
1061 Public method implementing our event loop. 1061 Public method implementing our event loop.
1062 1062
1063 @param disablePolling flag indicating to enter an event loop with 1063 @param disablePolling flag indicating to enter an event loop with
1064 polling disabled (boolean) 1064 polling disabled (boolean)
1065 """ 1065 """
1066 self.eventExit = None 1066 self.eventExit = False
1067 self.pollingDisabled = disablePolling 1067 self.pollingDisabled = disablePolling
1068 1068 selectErrors = 0
1069 while self.eventExit is None: 1069
1070 while not self.eventExit:
1070 wrdy = [] 1071 wrdy = []
1071 1072
1072 if self.writestream.nWriteErrors > self.writestream.maxtries: 1073 if self.writestream.nWriteErrors > self.writestream.maxtries:
1073 break 1074 break
1074 1075
1079 wrdy.append(self.errorstream) 1080 wrdy.append(self.errorstream)
1080 1081
1081 try: 1082 try:
1082 rrdy, wrdy, xrdy = select.select([self.readstream], wrdy, []) 1083 rrdy, wrdy, xrdy = select.select([self.readstream], wrdy, [])
1083 except (select.error, KeyboardInterrupt, socket.error): 1084 except (select.error, KeyboardInterrupt, socket.error):
1084 # just carry on 1085 selectErrors += 1
1085 continue 1086 if selectErrors <= 10: # arbitrarily selected
1086 1087 # just carry on
1088 continue
1089 else:
1090 # give up for too many errors
1091 break
1092
1093 # reset the select error counter
1094 selectErrors = 0
1095
1087 if self.readstream in rrdy: 1096 if self.readstream in rrdy:
1088 error = self.readReady(self.readstream) 1097 error = self.readReady(self.readstream)
1089 if error: 1098 if error:
1090 break 1099 break
1091 1100
1093 self.writeReady(self.writestream) 1102 self.writeReady(self.writestream)
1094 1103
1095 if self.errorstream in wrdy: 1104 if self.errorstream in wrdy:
1096 self.writeReady(self.errorstream) 1105 self.writeReady(self.errorstream)
1097 1106
1098 self.eventExit = None 1107 self.eventExit = False
1099 self.pollingDisabled = False 1108 self.pollingDisabled = False
1100 1109
1101 def eventPoll(self): 1110 def eventPoll(self):
1102 """ 1111 """
1103 Public method to poll for events like 'set break point'. 1112 Public method to poll for events like 'set break point'.

eric ide

mercurial