6.2.3 例: TPSIGRSTRTフラグを設定した同期メッセージの送信

次のリストは、bankappXFERサーバー・プロセスの一部である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);
}