2017-11-01 14 views
0

私のNettyクライアントには、ChannelInboundHandlerAdapterだけを持つ初期パイプラインがあります。このハンドラで私は自分のプロトコルのハンドシェイクを処理します。その後、通常の使用のためにパイプラインを変更する必要があります。つまり、ChannelInboundHandlerAdapterを削除し、LengthFieldPrepender/LengthFieldBasedFrameDecoder、Encoder/Decoder、Handlerを追加する必要があります。Netty - ハンドシェイク用の他のパイプライン?

これを行うにはどのような方法が最適ですか?

+0

何を試しましたか? [mcve]を参照してください。 – toonarmycaptain

答えて

1

チャネルハンドラのコンテキストには、channelがあります。パイプラインを取得し、新しいチャネルハンドラを必要な順序で追加します。最後に、ネゴシエーションハンドラを削除します。

このすべては、最終ステップとして、ネゴシエーションチャネルハンドラ内部から行う必要があります。 1つのチャネルに対する操作は、そのチャネルのイベントループ(「スレッド」と読む)に対して順次実行されるため、チャネル内に競合状態は存在しません。

関連する問題