MCPcopy Index your code
hub / github.com/github/copilot-sdk / _read_loop

Method _read_loop

python/copilot/_jsonrpc.py:257–281  ·  view source on GitHub ↗

Read messages from the stream (runs in thread)

(self)

Source from the content-addressed store, hash-verified

255 await loop.run_in_executor(None, write)
256
257 def _read_loop(self):
258 """Read messages from the stream (runs in thread)"""
259 try:
260 while self._running:
261 message = self._read_message()
262 if message:
263 self._handle_message(message)
264 else:
265 # No message means stream closed - process likely exited
266 break
267 except EOFError:
268 # Stream closed - check if process exited
269 pass
270 except Exception as e:
271 if self._running:
272 logger.warning("Failed to parse incoming JSON-RPC message", exc_info=True)
273 # Store error for pending requests
274 self._process_exit_error = str(e)
275
276 # Process exited or read failed - fail all pending requests
277 if self._running:
278 logger.debug("JSON-RPC read loop ended")
279 self._fail_pending_requests()
280 if self.on_close is not None:
281 self.on_close()
282
283 def _fail_pending_requests(self):
284 """Fail all pending requests when process exits"""

Callers

nothing calls this directly

Calls 4

_read_messageMethod · 0.95
_handle_messageMethod · 0.95
on_closeMethod · 0.45

Tested by

no test coverage detected