Read a chunk from the output stream into buffer. Exceptions raised: EOFError Stream was empty or Stream did not contain a valid header or content-body. ValueError Stream was closed externally.
(self)
| 296 | raise |
| 297 | |
| 298 | def read_next_chunk(self): |
| 299 | """ |
| 300 | Read a chunk from the output stream into buffer. |
| 301 | Exceptions raised: |
| 302 | EOFError |
| 303 | Stream was empty or Stream did not contain a valid header or content-body. |
| 304 | ValueError |
| 305 | Stream was closed externally. |
| 306 | """ |
| 307 | # Check if we need to resize. |
| 308 | current_buffer_size = len(self.buffer) |
| 309 | if ((current_buffer_size - self.buffer_end_offset) / |
| 310 | current_buffer_size) < self.BUFFER_RESIZE_TRIGGER: |
| 311 | resized_buffer = bytearray(current_buffer_size * 2) |
| 312 | # copy current buffer content to new buffer. |
| 313 | resized_buffer[0:current_buffer_size] = self.buffer |
| 314 | # point to new buffer. |
| 315 | self.buffer = resized_buffer |
| 316 | |
| 317 | # Memory view is required in order to read into a subset of a byte |
| 318 | # array |
| 319 | try: |
| 320 | length_read = self.stream.readinto( |
| 321 | memoryview(self.buffer)[self.buffer_end_offset:]) |
| 322 | self.buffer_end_offset += length_read |
| 323 | |
| 324 | if not length_read: |
| 325 | logger.debug(u'JSON RPC Reader reached end of stream') |
| 326 | raise EOFError(u'End of stream reached, no output.') |
| 327 | |
| 328 | return True |
| 329 | except ValueError as ex: |
| 330 | logger.debug(u'JSON RPC Reader on read_next_chunk encountered exception: %s', ex) |
| 331 | # Stream was closed. |
| 332 | raise |
| 333 | |
| 334 | def try_read_headers(self): |
| 335 | """ |
no outgoing calls