163 if method == "ResponseExit": |
163 if method == "ResponseExit": |
164 for sock in list(self.__connections.values()): |
164 for sock in list(self.__connections.values()): |
165 if not self._server.isSocketClosed(sock): |
165 if not self._server.isSocketClosed(sock): |
166 self.__clientSocketDisconnected(sock) |
166 self.__clientSocketDisconnected(sock) |
167 |
167 |
|
168 if data["params"]["debuggerId"] == self.__mainClientId: |
|
169 self.__mainClientExited() |
|
170 |
168 def __clientSocketDisconnected(self, sock): |
171 def __clientSocketDisconnected(self, sock): |
169 """ |
172 """ |
170 Private method handling a socket disconnecting. |
173 Private method handling a socket disconnecting. |
171 |
174 |
172 @param sock reference to the disconnected socket |
175 @param sock reference to the disconnected socket |
200 self.__pendingConnections.remove(sock) |
203 self.__pendingConnections.remove(sock) |
201 |
204 |
202 with contextlib.suppress(OSError): |
205 with contextlib.suppress(OSError): |
203 sock.close() |
206 sock.close() |
204 |
207 |
|
208 if not self.__connections: |
|
209 # no active connections anymore |
|
210 self.__lastClientExited() |
|
211 |
205 def __mainClientExited(self): |
212 def __mainClientExited(self): |
206 """ |
213 """ |
207 Private method to handle exiting of the main debug client. |
214 Private method to handle exiting of the main debug client. |
208 """ |
215 """ |
209 self._server.sendJson( |
216 self._server.sendJson( |
210 category=EricRequestCategory.Debugger, |
217 category=EricRequestCategory.Debugger, |
211 reply="MainClientExited", |
218 reply="MainClientExited", |
212 params={"debugger_id": self.__mainClientId if self.__mainClientId else ""}, |
219 params={"debugger_id": self.__mainClientId if self.__mainClientId else ""}, |
|
220 ) |
|
221 |
|
222 def __lastClientExited(self): |
|
223 """ |
|
224 Private method to handle exiting of the last debug client. |
|
225 """ |
|
226 self._server.sendJson( |
|
227 category=EricRequestCategory.Debugger, |
|
228 reply="LastDebugClientExited", |
|
229 params={}, |
213 ) |
230 ) |
214 |
231 |
215 def shutdownClients(self): |
232 def shutdownClients(self): |
216 """ |
233 """ |
217 Public method to shut down all connected clients. |
234 Public method to shut down all connected clients. |