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