xfnts_start メソッドは scds_pmf_start を使用して PMF の制御下でサービスを起動するので、xfnts_stop は scds_pmf_stop を使用してサービスを停止します。
xfnts_stop は、scds_initialize を最初に呼び出します。これによって、いくつかのハウスキーピング関数が実行されます。詳細については、 scds_initialize(3HA) のマニュアルページを参照してください。
次に示すように、xfnts_stop メソッドは、xfnts.c で定義されている svc_stop メソッドを呼び出します。
scds_syslog(LOG_ERR, "Issuing a stop request."); err = scds_pmf_stop(scds_handle, SCDS_PMF_TYPE_SVC, SCDS_PMF_SINGLE_INSTANCE, SIGTERM, scds_get_rs_stop_timeout(scds_handle)); if (err != SCHA_ERR_NOERR) { scds_syslog(LOG_ERR, "Failed to stop HA-XFS."); return (1); } scds_syslog(LOG_INFO, "Successfully stopped HA-XFS."); return (SCHA_ERR_NOERR); /* 正常に停止。*/
svc_stop から scds_pmf_stop 関数を呼び出すときは、次のことに注意してください。
SCDS_PMF_TYPE_SVC パラメータには、データサービスアプリケーションとして停止するプログラムを指定します。このメソッドは他のタイプのアプリケーション (障害モニターなど) も停止できます。
SCDS_PMF_SINGLE_INSTANCE パラメータには、シグナルを指定します。
SIGTERM パラメータには、リソースインスタンスを停止するのに使用するシグナルを指定します。このシグナルでインスタンスを停止できなかった場合、scds_pmf_stop は SIGKILL を送信してインスタンスを停止しようとします。このシグナルでもインスタンスを停止できなかった場合、タイムアウトエラーで戻ります。詳細については、scds_pmf_stop(3HA) のマニュアルページを参照してください。
タイムアウト値は、リソースの Stop_timeout プロパティの値を示します。
xfnts_stop メソッドは終了する前に scds_close を呼び出して、scds_initialize が割り当てたリソースを再利用します。詳細については、scds_initialize の呼び出しと scds_close(3HA) のマニュアルページを参照してください。