def readinto(self, dst: BufferType) -> int: """Read exactly `len(dst)` bytes into `dst`, or raise EOFError. Returns number of bytes read. """ buffer = self.buffer offset = self.offset if len(dst) > len(buffer) - offset: raise EOFError nread = memcpy(dst, 0, buffer, offset) self.offset += nread return nread
def write(self, src: bytes) -> int: """Write exactly `len(src)` bytes into buffer, or raise EOFError. Returns number of bytes written. """ buffer = self.buffer offset = self.offset if len(src) > len(buffer) - offset: raise EOFError nwrite = memcpy(buffer, offset, src, 0) self.offset += nwrite return nwrite