Sun Cluster 3.0 12/01 データサービス開発ガイド

関数の引数の構文解析

RGM は、次に示すように、すべてのコールバックメソッド (VALIDATE を除く) を呼び出します。


method_name -R resource_name -T resource_type_name -G resource_group_name 

method_name は、コールバックメソッドを実装するプログラムのパス名です。データサービスは、各メソッドのパス名を RTR ファイルに指定します。このようなパス名は、RTR ファイルの Rt_basedir プロパティに指定されたディレクトリからのパスになります。たとえば、サンプルのデータサービスの RTR ファイルでは、ベースディレクトリとメソッド名は次のように指定されます。


RT_BASEDIR=/opt/SUNWsample/bin;
START = dns_svc_start;
STOP =  dns_svc_stop;
...

コールバックメソッドの引数はすべて、フラグ付きの値として渡されます。-R はリソースインスタンスの名前を示し、-T はリソースのタイプを示し、-G はリソースが構成されているグループを示します。コールバックメソッドについての詳細は、rt_callbacks(1HA) のマニュアルページを参照してください。


注 -

VALIDATE メソッドを呼び出すときは、追加の引数 (リソースのプロパティ値と呼び出されるリソースグループ) を使用します。詳細は、「プロパティ更新の処理」を参照してください。


各コールバック、メソッドには、渡された引数を構文解析する関数が必要です。すべてのコールバックメソッドには同じ引数が渡されるので、データサービスは、アプリケーション内のすべてのコールバックメソッドで使用される単一の構文解析関数を提供します。

次に、サンプルのアプリケーションのコールバックメソッドで使用される parse_args 関数を示します。


######################################################################
# プログラム引数を解析する。
#
function parse_args # [args ...]
{
			typeset opt

			while getopts 'R:G:T:' opt
			do
						case "$opt" in
						R)
									# DNS リソースの名前
									RESOURCE_NAME=$OPTARG
									;;
									RESOURCE_NAME=$OPTARG
									;;
						G)
									# リソースが構成されるリソースグループ
									# の名前
									RESOURCEGROUP_NAME=$OPTARG
									;;
									RESOURCEGROUP_NAME=$OPTARG
									;;
						T)
									# リソースタイプの名前
									RESOURCETYPE_NAME=$OPTARG
									;;
									RESOURCETYPE_NAME=$OPTARG
									;;
						*)
								logger -p ${SYSLOG_FACILITY}.err ¥
								-t [$RESOURCETYPE_NAME,$RESOURCEGROUP_NAME,$RESOURCE_NAME] ¥
								"ERROR: Option $OPTARG unknown"
								exit 1
								;;
						esac
			done
}


注 -

サンプルのアプリケーションの PROBE メソッドはユーザー定義メソッドですが、Sun Cluster コールバックメソッドと同じ引数で呼び出されます。したがって、このメソッドには、他のコールバックメソッドと同じ構文解析関数が含まれています。


構文解析関数は、次に示すように、MAIN の中で呼び出されます。


parse_args "$@"