6.2.3 例: TPSIGRSTRTフラグを設定した同期メッセージの送信
次のリストは、bankapp
のXFER
サーバー・プロセスの一部であるTRANSFER
サービスに基づいています。(bankapp
は、Oracle Tuxedoシステムに提供されているサンプルATMIアプリケーションです。)TRANSFER
サービスは、クライアントとしてWITHDRAWAL
およびDEPOSIT
サービスを呼び出します。アプリケーションはこれらのサービスを呼び出すときに通信フラグをTPSIGRSTRT
に設定して、トランザクションをコミットしやすいようにします。TPSIGRSTRT
フラグは、シグナルの割込みがあった場合に行う処理を指定します。通信フラグの詳細は、『Oracle Tuxedo ATMI C関数リファレンス』のtpcall(3c)
に関する項を参照してください。
TPSIGRSTRTフラグを設定した同期メッセージの送信のリスト
/* Do a tpcall to withdraw from first account */
if (tpcall("WITHDRAWAL", (char *)reqfb,0, (char **)&reqfb,
(long *)&reqlen,TPSIGRSTRT) == -1) {
(void)Fchg(transf, STATLIN, 0,
"Cannot withdraw from debit account", (FLDLEN)0);
tpfree((char *)reqfb);
}
...
/* Do a tpcall to deposit to second account */
if (tpcall("DEPOSIT", (char *)reqfb, 0, (char **)&reqfb,
(long *)&reqlen, TPSIGRSTRT) == -1) {
(void)Fchg(transf, STATLIN, 0,
"Cannot deposit into credit account", (FLDLEN)0);
tpfree((char *)reqfb);
}
親トピック: 同期メッセージの送信