|
|
イベントのポスト
tppost(3c) 関数を使用すると、BEA Tuxedo のクライアントまたはサーバがイベントをポストできます。
tppost() 関数の呼び出しには、次の文法を使用します。
tppost(char *eventname, char *data, long len, long flags)
次の表は、tppost() 関数の引数を示しています。
tppost( ) 関数の引数
次のコード例は、BEA Tuxedo システムの銀行業務のサンプル・アプリケーション bankapp から引用したイベント・ポストを示しています。この例は、WITHDRAWAL サービスの一部です。WITHDRAWAL サービスは、10,000 ドルを超える引き出しかどうかを確認し、また BANK_TLR_WITHDRAWAL イベントをポストします。 tppost() を使用したイベントのポスト このコード例では、アプリケーションで目立った状況が発生したことを示すために、イベントをイベント・ブローカにポストしているだけです。特定のイベントに関心を持つクライアント (必要に応じて処理を行うクライアント) のイベントへのサブスクリプションは、別にコーディングします。.
.
.
/* 関連するイベント・ロジック */
static float evt_thresh = 10000.00 ; /* デフォルトのイベントしきい値 */
static char emsg[200] ; /* イベント・ポスト・ロジックで使用 */
.
.
.
/* BANK_TLR_WITHDRAWAL イベントをポストするかどうかの判定 */
if (amt < evt_thresh) {
/* ポストするイベントはありません。 */
tpreturn(TPSUCCESS, 0,transb->data, 0L, 0);
}
/* イベントをポストする準備 */
if ((Fchg (transf, EVENT_NAME, 0, "BANK_TLR_WITHDRAWAL", (FLDLEN)0) == -1) ||
(Fchg (transf, EVENT_TIME, 0, gettime(), (FLDLEN)0) == -1) ||
(Fchg (transf, AMOUNT, 0, (char *)&amt, (FLDLEN)0) == -1)) {
(void)sprintf (emsg, "Fchg failed for event fields:%s",
Fstrerror(Ferror)) ;
}
/* イベントのポスト */
else if (tppost ("BANK_TLR_WITHDRAWAL", /* event name */
(char *)transf, /* data */
0L, /* len */
TPNOTRAN | TPSIGRSTRT) == -1) {
/* イベント・ブローカを使用できない場合、エラーを無視 */
if (tperrno != TPENOENT)
(void)sprintf (emsg, "tppost failed:%s", tpstrerror (tperrno));
}
|
Copyright © 2001 BEA Systems, Inc. All rights reserved.
|