| 209 | return size |
| 210 | |
| 211 | def read(self, size=None): |
| 212 | size = self.getsize(size) |
| 213 | if size == 0: |
| 214 | return b"" |
| 215 | |
| 216 | if size < self.buf.tell(): |
| 217 | data = self.buf.getvalue() |
| 218 | ret, rest = data[:size], data[size:] |
| 219 | self.buf = io.BytesIO() |
| 220 | self.buf.write(rest) |
| 221 | return ret |
| 222 | |
| 223 | while size > self.buf.tell(): |
| 224 | data = self.reader.read(1024) |
| 225 | if not data: |
| 226 | break |
| 227 | self.buf.write(data) |
| 228 | |
| 229 | data = self.buf.getvalue() |
| 230 | ret, rest = data[:size], data[size:] |
| 231 | self.buf = io.BytesIO() |
| 232 | self.buf.write(rest) |
| 233 | return ret |
| 234 | |
| 235 | def readline(self, size=None): |
| 236 | size = self.getsize(size) |