BEA Logo BEA Tuxedo Release 8.0

  BEA ホーム  |  イベント  |  ソリューション  |  パートナ  |  製品  |  サービス  |  ダウンロード  |  ディベロッパ・センタ  |  WebSUPPORT

 

   Tuxedo ホーム   |   C 言語を使用した BEA Tuxedo アプリケーションのプログラミング   |   先頭へ   |   前へ   |   次へ   |   目次

 


イベントのポスト

tppost(3c) 関数を使用すると、BEA Tuxedo のクライアントまたはサーバがイベントをポストできます。

tppost() 関数の呼び出しには、次の文法を使用します。

tppost(char *eventname, char *data, long len, long flags)

次の表は、tppost() 関数の引数を示しています。

tppost( ) 関数の引数

引数

説明

eventname

31 文字以下の文字列と最後に NULL 文字を含むイベント名を指すポインタ。名前をドット (".") で開始することはできません。ドットは、BEA Tuxedo のシステム定義のイベントの先頭文字として予約されています。イベントのサブスクライブでは、イベント名にワイルド・カードを使用して、1 回の関数呼び出しで複数のイベントをサブスクライブすることができます。そのため関連するイベント名のカテゴリに同じ接頭語を使用すると便利です。

data

tpalloc() 関数で既に割り当てられているバッファを指すポインタ。

len

イベントと共にポストするデータ・バッファのサイズ。data が長さを指定する必要がないバッファ・タイプ (FML フィールド化バッファなど) を指している場合、または NULL が設定されている場合、len は無視され、データなしでイベントがポストされます。

flags

フラグのオプション。使用できるフラグについては、『BEA Tuxedo C リファレンス』の tppost(3c) を参照してください。

次のコード例は、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));
}

このコード例では、アプリケーションで目立った状況が発生したことを示すために、イベントをイベント・ブローカにポストしているだけです。特定のイベントに関心を持つクライアント (必要に応じて処理を行うクライアント) のイベントへのサブスクリプションは、別にコーディングします。

 

先頭へ戻る 前のトピックへ 次のトピックへ