| 1120 | return self._peek_unlocked(size) |
| 1121 | |
| 1122 | def _peek_unlocked(self, n=0): |
| 1123 | want = min(n, self.buffer_size) |
| 1124 | have = len(self._read_buf) - self._read_pos |
| 1125 | if have < want or have <= 0: |
| 1126 | to_read = self.buffer_size - have |
| 1127 | current = self.raw.read(to_read) |
| 1128 | if current: |
| 1129 | self._read_buf = self._read_buf[self._read_pos:] + current |
| 1130 | self._read_pos = 0 |
| 1131 | return self._read_buf[self._read_pos:] |
| 1132 | |
| 1133 | def read1(self, size=-1): |
| 1134 | """Reads up to size bytes, with at most one read() system call.""" |