0

フレームワークの Netty バージョンを最新にアップグレードしていますが、API が壊れているようです (最終バージョンが出るまで使用すべきではなかったことがわかっています)。ドキュメントを読み、クラスを調べて実行可能な解決策を見つけようとしましたが、見つけることができません。

    ctx.nextInboundMessageBuffer().add(message);
    ctx.fireInboundBufferUpdated();

    if (additionalBuf != null) {
        ChannelHandlerContext head = ctx.pipeline().firstContext();
        head.nextInboundByteBuffer().writeBytes(additionalBuf);
        head.fireInboundBufferUpdated();
    }

私が新しい API に変換しようとしているのは、どんな助けでも大歓迎です。

完全なコード:

@Override
protected void decode(ChannelHandlerContext ctx, ByteBuf in, List<Object> out) throws Exception {
    if (!in.isReadable()) {
        return;
    }

    int messageId = in.readUnsignedByte();

    ByteBuf additionalBuf = null;
    if (in.isReadable()) {
        additionalBuf = in.readBytes(in.readableBytes());
    }

    ChannelPipeline pipeline = ctx.pipeline();
    pipeline.remove(HandshakeDecoder.class);

    HandshakeMessage message = HandshakeMessage.forId(messageId);

    switch (message) {
    case LOGIN_MESSAGE:
        break;
    case UPDATE_MESSAGE:
        break;
    default:
        throw new IllegalStateException("Unexpected message id: " + messageId);
    }

    ctx.nextInboundMessageBuffer().add(message);
    ctx.fireInboundBufferUpdated();

    if (additionalBuf != null) {
        ChannelHandlerContext head = ctx.pipeline().firstContext();
        head.nextInboundByteBuffer().writeBytes(additionalBuf);
        head.fireInboundBufferUpdated();
    }
}
4

1 に答える 1

0

ここで説明されていると思います:

http://netty.io/news/2013/06/18/4-0-0-CR5.html

一般に、fireChannelRead(...) を使用するだけです。

于 2013-10-15T04:28:16.240 に答える