(self)
| 1183 | |
| 1184 | @defunct_on_error |
| 1185 | def _process_segment_buffer(self): |
| 1186 | readable_bytes = self._io_buffer.readable_io_bytes() |
| 1187 | if readable_bytes >= self._segment_codec.header_length_with_crc: |
| 1188 | try: |
| 1189 | self._io_buffer.io_buffer.seek(0) |
| 1190 | segment_header = self._segment_codec.decode_header(self._io_buffer.io_buffer) |
| 1191 | |
| 1192 | if readable_bytes >= segment_header.segment_length: |
| 1193 | segment = self._segment_codec.decode(self._iobuf, segment_header) |
| 1194 | self._io_buffer._segment_consumed = True |
| 1195 | self._io_buffer.cql_frame_buffer.write(segment.payload) |
| 1196 | else: |
| 1197 | # not enough data to read the segment. reset the buffer pointer at the |
| 1198 | # beginning to not lose what we previously read (header). |
| 1199 | self._io_buffer._segment_consumed = False |
| 1200 | self._io_buffer.io_buffer.seek(0) |
| 1201 | except CrcException as exc: |
| 1202 | # re-raise an exception that inherits from ConnectionException |
| 1203 | raise CrcMismatchException(str(exc), self.endpoint) |
| 1204 | else: |
| 1205 | self._io_buffer._segment_consumed = False |
| 1206 | |
| 1207 | def process_io_buffer(self): |
| 1208 | while True: |
no test coverage detected