PlayのNettyServer
PlayのNettyに対するアダプターとなるNettyServer、こいつが何をするのかと、ここでリクエストを受け取って処理するとこを見る。
play.api...
で行うリクエスト受け取ってレスポンス返すとこは、Qiitaの以下らへんの記事見れば良いと思うので省略。ContentType
を決定するあたりにアドホック多相とか使っててScalaっぽくて好き。
- Play Frameworkのソースコードリーディング Action周り - Qiita
- Play Frameworkのソースコードリーディング Action周り(BodyParserとAnyContent) - Qiita
- あわせて読みたい: やさしいIteratee入門 - slideshare
簡単にまとめると、Netty
から受け取ってplay.api
まで渡すまでに↓の過程を踏む
play.core.server.NettyServer
が↓の持ってるplay.core.server.netty.PlayDefaultUpstreamHandler.messageReceived
で↓の呼び出すplay.core.server.Server.getHandlerFor
が↓の持ってるplay.core.server.Server.sendHandler
で↓の呼び出す
play.api.GlobalSettings.onRequestReceived: (RequestHeader, Handler)
では↓の3つの処理が行われるonRouteRequest(request)
router.handleFor(request)
doFilter(rh => handler)(routedRequest)
以下で触れるのは2.3.xブランチのこのcommit上の話、ただコードを読むだけ
続きを読む