Handle DataReceived event. Args: event: DataReceived event with body data Returns: None (request completion handled by StreamEnded)
(self, event)
| 241 | stream.receive_headers(headers, end_stream=False) |
| 242 | |
| 243 | def _handle_data_received(self, event): |
| 244 | """Handle DataReceived event. |
| 245 | |
| 246 | Args: |
| 247 | event: DataReceived event with body data |
| 248 | |
| 249 | Returns: |
| 250 | None (request completion handled by StreamEnded) |
| 251 | """ |
| 252 | stream_id = event.stream_id |
| 253 | data = event.data |
| 254 | |
| 255 | stream = self.streams.get(stream_id) |
| 256 | if stream is None: |
| 257 | # Stream was reset or doesn't exist |
| 258 | return None |
| 259 | |
| 260 | stream.receive_data(data, end_stream=False) |
| 261 | |
| 262 | # Increment flow control windows (only if data received) |
| 263 | if len(data) > 0: |
| 264 | try: |
| 265 | # Update stream-level window |
| 266 | self.h2_conn.increment_flow_control_window(len(data), stream_id=stream_id) |
| 267 | # Update connection-level window |
| 268 | self.h2_conn.increment_flow_control_window(len(data), stream_id=None) |
| 269 | # Send WINDOW_UPDATE frames immediately |
| 270 | self._send_pending_data() |
| 271 | except (ValueError, _h2_exceptions.FlowControlError): |
| 272 | # Window overflow - send FLOW_CONTROL_ERROR and close |
| 273 | self.close(error_code=HTTP2ErrorCode.FLOW_CONTROL_ERROR) |
| 274 | |
| 275 | return None |
| 276 | |
| 277 | def _handle_stream_ended(self, event): |
| 278 | """Handle StreamEnded event. |
no test coverage detected