fml8 チュートリアル (バージョン 7.99.1-20180910)
Prev | Chapter 32. バージョン依存性を解決するための fml ブートローダ | Next

# プロセス実行時に使われるモジュール群

- /usr/local/libexec/fml/loader (wrapper)。 これは Bootstrap() を実行します。 distribute などは、皆この loader へのシンボリックリンクです。 /usr/local/libexec/fml/ 以下を参照してください。

- - /usr/local/etc/fml/main.cf を読み込み、 fml のバージョンを知ります。 また、main.cf の値から @INC (Perl のライブラリサーチパス)を再設定し、 読み込むべきライブラリのバージョン依存性を解決します。 default_config.cf.{ja,en} はバージョン依存ですので、 設定ファイルを読み込む前に、 この段階でバージョンを評価しなければいけないことに注意してください。

  - @ARGV (実行されたプログラムの引数 )を評価し、 どのＭＬの config.cf (設定ファイル)群を読み込むのかを判断します。

  - 次に FML::Process::Switch (バージョン依存)クラスをロードします。

    - Bootstrap2() および ProcessSwitch() を実行し、 配送用、コマンドメール用などの各プロセスへ制御を移します。 この時点で、すでに $0 から、 どのプロセスへ成りかわればいいのかは分かっています。

    - (ポリモーフィズムの例) モジュールをダイナミックバインディングし、 該当するプロセスオブジェクトを生成、 そして、プロセスをスタートさせます。 FML::Process::Flow の中に、 どのように fml8 プロセスを実行するかが 定義されています。おおまかには

          $process = new FML::Process::なにか;
          $process->prepare($args);
          $process->verify_request($args);
          $process->run($args);
          $process->finish($args);

      のような実行順です。 各プロセスは、それぞれについて適当なメソッドを FML::Process:: 以下のクラスで用意する必要があります。

Prev | Home | Next
FML::Process:: クラスの階層構造 | Up | 議論: ml_name と ml_domain の値はどこで解決するのが正しいか？

fml 8.0 (fml-devel) project homepage is www.fml.org/software/fml8/.
fml 4.0 project homepage is www.fml.org/software/fml4/.
about one floppy bsd routers, see www.bsdrouter.org/.
other free softwares are found at www.fml.org/software/.

author's homepage is www.fml.org/home/fukachan/.
Also, visit nuinui's world :) at www.nuinui.net.

For questions about FML, e-mail <fml-bugs@fml.org>.