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
に処理を委譲する