(self, byte_obj: Buffer)
| 151 | return False |
| 152 | |
| 153 | def readinto(self, byte_obj: Buffer) -> int: |
| 154 | if not self.int_buffer: |
| 155 | raise _StreamingError( |
| 156 | "No buffer for stream in _ReadStream.readinto", |
| 157 | request=self.request, |
| 158 | response=None, |
| 159 | ) |
| 160 | if self.read_len == 0: |
| 161 | # wait for the worker to send something |
| 162 | js.Atomics.store(self.int_buffer, 0, ERROR_TIMEOUT) |
| 163 | self.worker.postMessage(_obj_from_dict({"getMore": self.connection_id})) |
| 164 | if ( |
| 165 | js.Atomics.wait(self.int_buffer, 0, ERROR_TIMEOUT, self.timeout) |
| 166 | == "timed-out" |
| 167 | ): |
| 168 | raise _TimeoutError |
| 169 | data_len = self.int_buffer[0] |
| 170 | if data_len > 0: |
| 171 | self.read_len = data_len |
| 172 | self.read_pos = 0 |
| 173 | elif data_len == ERROR_EXCEPTION: |
| 174 | string_len = self.int_buffer[1] |
| 175 | # decode the error string |
| 176 | js_decoder = js.TextDecoder.new() |
| 177 | json_str = js_decoder.decode(self.byte_buffer.slice(0, string_len)) |
| 178 | raise _StreamingError( |
| 179 | f"Exception thrown in fetch: {json_str}", |
| 180 | request=self.request, |
| 181 | response=None, |
| 182 | ) |
| 183 | else: |
| 184 | # EOF, free the buffers and return zero |
| 185 | # and free the request |
| 186 | self.is_live = False |
| 187 | self.close() |
| 188 | return 0 |
| 189 | # copy from int32array to python bytes |
| 190 | ret_length = min(self.read_len, len(memoryview(byte_obj))) |
| 191 | subarray = self.byte_buffer.subarray( |
| 192 | self.read_pos, self.read_pos + ret_length |
| 193 | ).to_py() |
| 194 | memoryview(byte_obj)[0:ret_length] = subarray |
| 195 | self.read_len -= ret_length |
| 196 | self.read_pos += ret_length |
| 197 | return ret_length |
| 198 | |
| 199 | |
| 200 | class _StreamingFetcher: |
nothing calls this directly
no test coverage detected