def readLine(sock): sb = "" while(True): b = sock.recv(1) if(b == b'\r'): c = sock.recv(1) if(c == b'\n'): break; sb += Decoder.decodeData(b) sb += Decoder.decodeData(c) else: sb += Decoder.decodeData(b) if(len(sb) == 0): raise PiedisException('It seems like server has closed the connection.') return sb
def hashByMD5(data): if not isinstance(data, bytes): data = Decoder.encodeData(data) m = hashlib.md5() m.update(data) digest = m.hexdigest() # digest = Decoder.encodeData(digest) # res = ((digest[3] & 0xFF) << 24) | ((digest[2] & 0xFF) << 16) | ((digest[1] & 0xFF) << 8) | (digest[0] & 0xFF); return digest
def __init__(self, command, *args): if isinstance(command, bytes): self.command = command else: self.command = Decoder.encodeData(command) if isinstance(args, bytes): self.args = args return if isinstance(args, str): self.args = Decoder.encodeData(args) return argsLen = len(args) self.args = [None] * argsLen for i in range(0, argsLen): if isinstance(args[i], bytes): self.args[i] = args[i] else: self.args[i] = Decoder.encodeData(str(args[i]))
def parseResponse(sock): b = sock.recv(1) if b == MINUS_BYTE: parseError(sock) elif b == ASTERISK_BYTE: return parseMultiBulkReply(sock) elif b == COLON_BYTE: return parseInteger(sock) elif b == DOLLAR_BYTE: return parseBulkReply(sock) elif b == PLUS_BYTE: return parseStatusCodeReply(sock) else: raise ProtocolException("Unknown reply: " + Decoder.decodeData(b))
def aggregate(self, aggregate): self.params.append(Decoder.decodeData(RedisKeyword.AGGREGATE)) self.params.append(Decoder.decodeData(aggregate)); return self
def weights(self, *weights): self.params.append(Decoder.decodeData(RedisKeyword.WEIGHTS)) for weight in weights: self.params.append(str(weight)) return self