class Reader(object): def __init__(self, protocolError, responseError): self.protocolError = protocolError self.responseError = responseError self._stack = [] self._inbuffer = BytesIO() #self.decode = connection.decode def read(self, length = None): """ Read a line from the buffer is no length is specified, otherwise read ``length`` bytes. Always strip away the newlines. """ if length is not None: chunk = self._inbuffer.read(length+2) else: chunk = self._inbuffer.readline() if chunk: if chunk[-2:] == b'\r\n': return chunk[:-2] else: self._inbuffer = BytesIO(chunk) return False def feed(self, buffer): buffer = self._inbuffer.read(-1) + buffer self._inbuffer = BytesIO(buffer) def gets(self, recursive = False): '''Called by the Parser''' if self._stack and not recursive: task = self._stack.pop() else: response = self.read() if not response: return False task = redisReadTask(response[:1], response[1:], self) return task.gets(recursive=recursive)
def read(self, length = None): """ Read a line from the buffer is no length is specified, otherwise read ``length`` bytes. Always strip away the newlines. """ if length is not None: chunk = self._inbuffer.read(length+2) else: chunk = self._inbuffer.readline() if chunk: if chunk[-2:] == b'\r\n': return chunk[:-2] else: self._inbuffer = BytesIO(chunk) return False
def feed(self, buffer): buffer = self._inbuffer.read(-1) + buffer self._inbuffer = BytesIO(buffer)
def __init__(self, protocolError, responseError): self.protocolError = protocolError self.responseError = responseError self._stack = [] self._inbuffer = BytesIO()