4.5 クライアント・プロセスの例
次のリストに示す擬似コードは、通常のATMIクライアント・プロセスがアプリケーションに参加してから分離するまでの処理を示しています。
通常のクライアント・プロセスのパラダイムのリスト
main()
{
check level of security
call tpsetunsol() to name your handler for TPU_DIP
get usrname, cltname
prompt for application password
allocate a TPINIT buffer
place values into TPINIT buffer structure members
if (tpinit((TPINIT *) tpinfo) == -1){
error routine;
}
allocate a message buffer
while user input exists {
place user input in the buffer
make a service call
receive the reply
check for unsolicited messages
}
free buffers
. . .
if (tpterm() == -1){
error routine;
}
}
エラーが発生すると-1
が返され、アプリケーションが外部グローバル変数tperrno
にエラーの原因を示す値を設定します。tperrno
は、atmi.h
ヘッダー・ファイルに定義されています。詳細は、『ファイル形式、データ記述、MIBおよびシステム・プロセス・リファレンス』のtperrno(5)
に関する項を参照してください。通常、プログラマが発生したエラーの種類を示すエラー・コードをこのグローバル変数に設定します。tperrno
の値については、「システム・エラー」を参照してください。各ATMI呼出しで返される全エラー・コードのリストについては、『Oracle Tuxedo ATMI C言語関数リファレンス』のC言語アプリケーション・トランザクション・モニター・インタフェースに関する項を参照してください。
次のリストは、tpinit()
およびtpterm()
関数の使用方法を示しています。このサンプル・コードは、Oracle Tuxedoソフトウェアに提供されている銀行業務のサンプル・アプリケーションbankapp
から引用したものです。
アプリケーションへの参加と分離のリスト
#include <stdio.h> /* UNIX */
#include <string.h> /* UNIX */
#include <fml.h> /* ORACLE Tuxedo System */
#include <atmi.h> /* ORACLE Tuxedo System */
#include <Uunix.h> /* ORACLE Tuxedo System */
#include <userlog.h> /* ORACLE Tuxedo System */
#include "bank.h" /* BANKING #defines */
#include "aud.h" /* BANKING view defines */
...
main(argc, argv)
int argc;
char *argv[];
{
...
if (strrchr(argv[0],'/') != NULL)
proc_name = strrchr(argv[0],'/')+1;
else
proc_name = argv[0];
...
/* Join application */
if (tpinit((TPINIT *) NULL) == -1) {
(void)userlog("%s: failed to join application\n", proc_name);
exit(1);
}
...
/* Leave application */
if (tpterm() == -1) {
(void)userlog("%s: failed to leave application\n", proc_name);
exit(1);
}
}
この例は、tpinit()
を呼び出すことによって、アプリケーションに参加しているクライアント・プロセスを示しています。エラー(戻り値が–1
)が発生すると、このプロセスはCプログラム文のprintf()
と似た引数を取るuserlog()
を呼び出して、中央イベント・ログにメッセージを書き込みます。詳細は、『Oracle Tuxedo ATMI C関数リファレンス』のuserlog(3c)
に関する項を参照してください。
同様に、tpterm()
を呼び出し、エラーが発生すると、このプロセスは中央イベント・ログにメッセージを書き込みます。
親トピック: クライアントのコーディング