RedisClientHandler Class — netty Architecture
Architecture documentation for the RedisClientHandler class in RedisClientHandler.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 0da4c5dd_81b9_9df4_f97a_3de1b5c89a03["RedisClientHandler"] ebcf3e55_03d1_2a2d_33fd_99b0e5d89022["RedisClientHandler.java"] 0da4c5dd_81b9_9df4_f97a_3de1b5c89a03 -->|defined in| ebcf3e55_03d1_2a2d_33fd_99b0e5d89022 a98043b1_fd24_af56_ffcc_b7d491b322b4["write()"] 0da4c5dd_81b9_9df4_f97a_3de1b5c89a03 -->|method| a98043b1_fd24_af56_ffcc_b7d491b322b4 39111676_f00f_afc0_1c68_f5e8c4a49681["channelRead()"] 0da4c5dd_81b9_9df4_f97a_3de1b5c89a03 -->|method| 39111676_f00f_afc0_1c68_f5e8c4a49681 a9f16ec3_a6c5_e403_934c_cfe10badc238["exceptionCaught()"] 0da4c5dd_81b9_9df4_f97a_3de1b5c89a03 -->|method| a9f16ec3_a6c5_e403_934c_cfe10badc238 b238d6e3_b355_8547_6611_ceca9b71ff40["printAggregatedRedisResponse()"] 0da4c5dd_81b9_9df4_f97a_3de1b5c89a03 -->|method| b238d6e3_b355_8547_6611_ceca9b71ff40 70ebcd81_edc4_6c7d_ddcd_cc8dc7d6ef61["String()"] 0da4c5dd_81b9_9df4_f97a_3de1b5c89a03 -->|method| 70ebcd81_edc4_6c7d_ddcd_cc8dc7d6ef61
Relationship Graph
Source Code
example/src/main/java/io/netty/example/redis/RedisClientHandler.java lines 39–90
public class RedisClientHandler extends ChannelDuplexHandler {
@Override
public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) {
String[] commands = ((String) msg).split("\\s+");
List<RedisMessage> children = new ArrayList<RedisMessage>(commands.length);
for (String cmdString : commands) {
children.add(new FullBulkStringRedisMessage(ByteBufUtil.writeUtf8(ctx.alloc(), cmdString)));
}
RedisMessage request = new ArrayRedisMessage(children);
ctx.write(request, promise);
}
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) {
RedisMessage redisMessage = (RedisMessage) msg;
printAggregatedRedisResponse(redisMessage);
ReferenceCountUtil.release(redisMessage);
}
@Override
public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {
System.err.print("exceptionCaught: ");
cause.printStackTrace(System.err);
ctx.close();
}
private static void printAggregatedRedisResponse(RedisMessage msg) {
if (msg instanceof SimpleStringRedisMessage) {
System.out.println(((SimpleStringRedisMessage) msg).content());
} else if (msg instanceof ErrorRedisMessage) {
System.out.println(((ErrorRedisMessage) msg).content());
} else if (msg instanceof IntegerRedisMessage) {
System.out.println(((IntegerRedisMessage) msg).value());
} else if (msg instanceof FullBulkStringRedisMessage) {
System.out.println(getString((FullBulkStringRedisMessage) msg));
} else if (msg instanceof ArrayRedisMessage) {
for (RedisMessage child : ((ArrayRedisMessage) msg).children()) {
printAggregatedRedisResponse(child);
}
} else {
throw new CodecException("unknown message type: " + msg);
}
}
private static String getString(FullBulkStringRedisMessage msg) {
if (msg.isNull()) {
return "(null)";
}
return msg.content().toString(CharsetUtil.UTF_8);
}
}
Source
Frequently Asked Questions
What is the RedisClientHandler class?
RedisClientHandler is a class in the netty codebase, defined in example/src/main/java/io/netty/example/redis/RedisClientHandler.java.
Where is RedisClientHandler defined?
RedisClientHandler is defined in example/src/main/java/io/netty/example/redis/RedisClientHandler.java at line 39.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free