private byte[] processBulkReply(final RedisInputStream is) { int len = Integer.parseInt(is.readLine()); if (len == -1) { return null; } byte[] read = new byte[len]; int offset = 0; try { while (offset < len) { offset += is.read(read, offset, (len - offset)); } // read 2 more bytes for the command delimiter is.readByte(); is.readByte(); } catch (IOException e) { throw new JedisConnectionException("protocol -> processBulkReply IOException"); } return read; }
private Object process(final RedisInputStream is) { try { byte b = is.readByte(); if (b == MINUS_BYTE) { processError(is); } else if (b == ASTERISK_BYTE) { return processMultiBulkReply(is); } else if (b == COLON_BYTE) { return processInteger(is); } else if (b == DOLLAR_BYTE) { return processBulkReply(is); } else if (b == PLUS_BYTE) { return processStatusCodeReply(is); } else { throw new JedisConnectionException("Unknown reply: " + (char) b); } } catch (IOException e) { throw new JedisConnectionException("process IOException " + e.getMessage()); } return null; }