ぷらがーさーば

svn の branches/feature-server から取得して頑張ってみることにしたので、作業メモを残します。

作業ログ

チェックアウトした Plagger の example-multibbs.yaml を動かそうとしたけど、コンパイルエラーがたくさんでたので各個撃破。using JSON; とか書いてあるのを書き直したり、cpan install したりの単純作業。最終的に動いたと思ったら Windows では setgid は implement されてませんと言われたので Linux でもう一度 (ノー`)。動くコードはあるので cpan から必要なモジュール集めるだけでいいけど。

Plagger Server のシーケンス

PreFork でプロトコル登録して、サーバ動作としてプロトコルにリクエストがきたら Plagger のいつもの処理を走らせる。そして再びリクエスト待ち。Engine を設定しないと run_hook にデフォルト登録されていないので、プラグインロードしただけで終了する。

Plagger/Server.pm

bootstrap
 server_run
  protocol.load
  engine.load
  pull.init
  push.init
  push.start
  engine.run
 
engine_run
 plugin.init
 subscription.load
 customfeed.handle
 aggregator.finalize
 pull.handle
  update.entry.fixup
 update.feed.fixup
 update.fixup
 smartfeed.init
  smartfeed.entry
 smartfeed.feed
 smartfeed.finalize
 
 publish.init
  publish.entry.fixup
 publish.feed
  publish.entry
 pull.publish
 publish.finalize
 pull.finalize

Plugin/Server/Engine/PreFork.pm
register
 engine.load -> load
 engine.run  -> start
 
start
 ポートとプロトコルのマッピング
  Net::Server::PreFork->run
   initialize
   post_configure
   post_configure_hook
   pre_bind
   bind
   post_bind_hook
   post_bind
   pre_loop_hook
   loop
    run_client_connection
     process_request
      engine_run (Plagger::Server engine_run)
   server_close