[Glue!] 標準コマンドライン・オプションの取得


Glue Logic では幾つかの標準的なコマンドライン・オプションを定義しており、 エージェントのユーザ・インタフェースをできるだけ統一できるようにしている。 エージェントのプログラムの中からも、 これらのオプションの値を容易に利用できるようになっている。

標準コマンドライン・オプションの役割

現在は三つの標準コマンドライン・オプションが定義されている。 各々の意味は以下の通り:
-Agent
エージェント識別子を指定する。 エージェント識別子は一つのサーバに接続されたエージェント群の中でユニークでなければならない。
-Anchor
エージェントを代表する名前を指定する。 エージェントはここで指定された名前やそれを構成する名前の値が変わった時、 そのイベントに対してエージェント自身が定めた方法で応答することが期待される。
-Server
エージェントが接続すべきサーバを指定する。


GlueLogicParseArgs 関数の機能

GlueLogicParseArgs 関数は、 そのエージェントが起動された時のコマンドライン引数の並びの中から 標準コマンドライン・オプションを探して各文字型配列にセットすると共に、 その他のコマンドライン・オプションを dictionary 型の変数に代入する。

この関数の引数としては、エージェントのメイン・プログラムに渡される argcargv とをそのまま渡す。

コマンドライン・オプションは UNIX のオプション指定方法の伝統にしたがって、 キーワードの頭に '-' をつけた形式で表現される。 オプションをスイッチ ( 指定の有無に応じて ON と OFF だけを指定できる ) として使うのではなく、 プログラムから参照できる値を与えたい場合には '-' をつけたキーワードの後に、 空白で区切って値とするワードを続けるか、 もしくは '-' をつけたキーワードの直後に '=' とその値を空白を入れずに続ける。

コマンドライン引数に与えられた情報は先頭から順に解釈され、 キーワードともその値とも解釈できない最初の情報の直前までをオプションとみなし、 それ以降はファイル名などの一般の引数の指定とみなす。 もしも '-' で始まる文字列をキーワードの指定と解釈されたくない場合には、 その直前に '--' を指定することにより、 '--' より後はオプションでないことを明示的に指示できる。

GlueLogicParseArgs 関数はその戻り値として、 キーワードともその値とも解釈できない最初の情報の、 argv 配列中での添字を返す。 プログラム中でコマンドライン引数を参照する場合には、 この戻り値を利用しなければならないため、 GlueLogicParseArgs 関数の呼出は出来るだけ早く行なうことが望ましい。

このようにして指定された値は、 標準コマンドライン・オプションにあっては GlueLogicServer, GlueLogicAgent, GlueLogicAnchor の 各文字配列に、 それ以外のオプションにあっては 簡易データベースである dictionary 型の変数 GlueLogicParsedArgs のデータ項目とされる。

このようにして取得された標準コマンド・オプションは GlueLogicConnect 関数を実行する時に、 もっとも優先度の高いデータソースとして利用される。


コマンドライン引数の指定の例

hoge -Anchor foo configfile.cfg
hoge というエージェントを foo という名前をアンカーとして起動する。 -Anchor は標準コマンドライン・オプションである。 このエージェントに与える情報は configfile.cfg というファイルに与えられ、 この内容はエージェントのプログラムの中から <> 演算子で読み出すことができる。 また、 configfile.cfg という文字列そのものは $ARGV[0] で参照できる。

hoge -Agent=ID -Param bar
hoge というエージェントを ID というエージェント識別子でサーバに接続して起動し、 bar という値をエージェントのプログラムからは $GlueLogicParam という perl 変数の値として参照できるようにする。 -Server は標準コマンドライン・オプションであるが、 -Param はユーザ定義のコマンドライン・オプションである。

hoge -Server machine foo bar
hoge というエージェントを machine という名前のホストで動いているサーバに接続して起動し、 リスト @ARGV( 'foo', 'bar' ) という値を持つようにする。


 [M.T. HomePage]  [written & copyrighted by Masayuki Takata]