ChannelOperationsHandler
- reactor-netty が提供している
ChannelHandler の実装クラス
- 内部に
ContextHandler を持ち、これを通じて処理の登録などを行っている模様
channelActive(ChannelHandlerContext)
ContextHandler#createOperations(Channel, Object) を通じて ChannelOperations を Channel の Attribute に保存する
ChannelOperations#autoCreateOperations の値が true の場合のみだが、このフィールドのデフォルト値は true となっている
ChannelOperations.OnNew<Channel> が ChannelOperations を生成するが、これは ContextHandler#newClientContext で渡されてくる
ContextHandler#newClientContext に渡す ChannelOperations.OnNew<Channel> は HttpClient#doHandler に渡される BiFunction<NettyInbound,NettyOutbound, Publisher<Void>> をラップして作られる
HttpClientOperations#bindHttp は HttpClientOperations を生成するファクトリーメソッド
HttpClientOperations は ChannelOperations のサブクラス。 ChannelOperations は InboundHandler のラッパー NettyInbound と OutboundHandler のラッパー NettyOutbound を実装したクラス
handler != null ? (ch, c, msg) -> {
if(onSetup != null){
onSetup.accept(ch);
}
return HttpClientOperations.bindHttp(ch, handler, c);
} : EMPTY);
channelRead
channelActive で作った ChannelOperations#onInboundNext に処理を委譲する