実行環境抽象化に関係ありそうなところだけを抜き出し。Catalyst.pm しか見てなくて、大雑把に把握しかしてないから多分抜けてるところがあり。
というかまあ Catalyst の実行環境抽象化部分だけ取り出してモジュールができないかなーと思って大体の処理の流れをつかむためにメモっただけなんで正確性はアレ。まあこんな感じかなーとつかむのには良いかも。
とりあえず Catalyst のコードは追うのは面倒だけど結構分かりやすい。
Catalyst
run
handle_request
prepare
if ( engine.can('prepare') ) {
engine.preapre
}
else {
prepare_request
prepare_connection
prepare_query_paramters
prepare_headers
prepare_cookies
prepare_path
unless ( config.parse_on_demand ) \{
prepare_body
}
prepare_action
}
disaptch
dispatcher.dispatch
finalize
if ( engine.can('finalize') ) {
engine.finalize
}
else {
finalize_upload
if ( error.last >= 0 ) {
finalize_error
}
finalize_headers
finalize_cookies
engine.finalize_headers
if ( request.method eq 'HEAD' ) {
response.body = ''
}
finalize_body
}
#FIXME