public void channelRead0()

in tchannel-core/src/main/java/com/uber/tchannel/handlers/InitRequestHandler.java [46:89]


    public void channelRead0(ChannelHandlerContext ctx, ByteBuf buf) throws Exception {

        buf.touch("InitRequestHandler.channelRead0(...)");
        Frame frame = MessageCodec.decode(
            MessageCodec.decode(buf)
        );

        switch (frame.getType()) {

            case InitRequest:

                InitRequestFrame initRequestFrameMessage = (InitRequestFrame) frame;

                if (initRequestFrameMessage.getVersion() == InitFrame.DEFAULT_VERSION) {

                    InitResponseFrame initResponseFrame = new InitResponseFrame(
                        initRequestFrameMessage.getId(),
                        InitFrame.DEFAULT_VERSION
                    );

                    initResponseFrame.setHostPort(this.peerManager.getHostPort());

                    // TODO: figure out what to put here
                    initResponseFrame.setProcessName("java-process");
                    MessageCodec.write(ctx, initResponseFrame);
                    ctx.pipeline().remove(this);
                    peerManager.setIdentified(ctx.channel(), initRequestFrameMessage.getHeaders());

                } else {
                    sendError(ErrorType.FatalProtocolError,
                        String.format("Expected Protocol version: %d, got version: %d", InitFrame.DEFAULT_VERSION,
                            initRequestFrameMessage.getVersion()),
                        frame.getId(), ctx);
                }

                break;

            default:
                sendError(ErrorType.FatalProtocolError,
                    "The first frame should be an Init Request",
                    frame.getId(), ctx);
                break;
        }
    }