Home / Class/ RedisClientHandler Class — netty Architecture

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);
    }
}

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