void (@NotNull ChannelHandlerContext context, @NotNull ByteBuf input) { while (true) { switch (state) { case LENGTH: { ByteBuf buffer = getBufferIfSufficient(input, 4, context); if (buffer == null) { return; } state = State.CONTENT; contentLength = buffer.readInt(); } case CONTENT: { CharSequence content = readChars(input); if (content == null) { return; } try { rpcServer.messageReceived(client, content); } catch (Throwable e) { clientManager.getValue().getExceptionHandler().exceptionCaught(e); } finally { contentLength = 0; state = State.LENGTH; } } } } }