public <T> T await(Command<K, V, T> cmd, long timeout, TimeUnit unit) { if (!cmd.await(timeout, unit)) { cmd.cancel(true); throw new RedisException("Command timed out"); } CommandOutput<K, V, T> output = cmd.getOutput(); if (output.hasError()) throw new RedisException(output.getError()); return output.get(); }
@Override public synchronized void channelClosed(ChannelHandlerContext ctx, ChannelStateEvent e) throws Exception { if (closed) { for (Command<K, V, ?> cmd : queue) { cmd.getOutput().setError("Connection closed"); cmd.complete(); } queue.clear(); queue = null; channel = null; } }