| 1139 | return self._peek_unlocked(size) |
| 1140 | |
| 1141 | def _peek_unlocked(self, n=0): |
| 1142 | want = min(n, self.buffer_size) |
| 1143 | have = len(self._read_buf) - self._read_pos |
| 1144 | if have < want or have <= 0: |
| 1145 | to_read = self.buffer_size - have |
| 1146 | current = self.raw.read(to_read) |
| 1147 | if current: |
| 1148 | self._read_buf = self._read_buf[self._read_pos:] + current |
| 1149 | self._read_pos = 0 |
| 1150 | return self._read_buf[self._read_pos:] |
| 1151 | |
| 1152 | def read1(self, size=-1): |
| 1153 | """Reads up to size bytes, with at most one read() system call.""" |