|
|
tppost(3c)
名前
tppost()-イベントをポストする
形式
#include <atmi.h>
int tppost(char *eventname, char *data, long len, long flags)
機能説明
呼び出し元は tppost() を使用して、イベントとそれに伴うすべてのデータをポストします。イベント名は eventname に指定し、data は、NULL 以外の場合はデータを指すようにします。ポストされたイベントとそのデータは、BEA Tuxedo ATMI イベント・ブローカによって、eventname に対して評価が成功するサブスクリプションを持ち、data に対して評価が成功するオプションのフィルタ・ルールを持つすべてのサブスクライバにディスパッチされます。
eventname には、最大で 31 文字の NULL で終了する文字列を指定します。 eventnameの最初の文字はドット (".") であってはいけません。なぜなら、この文字は BEA Tuxedo ATMI システム自身が定義するあらゆるイベントの最初の文字として予約されているからです。
data には、NULL 以外の場合は、tpalloc() によって以前に割り当てたバッファを指定し、len にはバッファ内のイベントと共にポストするバッファに入っているデータの長さを指定しなければなりません。長さを指定する必要のないタイプのバッファ (FML フィールド化バッファなど) を data が指す場合、len は無視されます。data が NULL の場合、len は無視され、イベントはデータなしでポストされます。
tppost() をトランザクション中で使用する場合は、トランザクションの境界を拡大して、これらのサーバ上、およびイベント・ブローカが通知する安定記憶域上のメッセージ・キューを含むようにすることができます。トランザクションによるポストが行われると、ポスト元のトランザクションに代わって、ポストされたイベントの受信側の一部 (たとえば、サーバおよびキューなど) には通知され、一部 (たとえば、クライアントなど) には通知されません。
ポスト元がトランザクション内にあり、TPNOTRAN がセットされている場合は、ポストされたイベントはイベント・ブローカに渡されます。これは、イベント・ブローカがイベントをポスト元のトランザクションの一部として処理できるようにするためです。イベント・ブローカはトランザクションによるイベント通知を、tpsubscribe() に渡される ctl->flags パラメータで TPEVTRAN ビットの設定を使用したサービス・ルーチンおよび安定記憶域上のキューのサブスクリプションだけにディスパッチします。イベント・ブローカは、クライアントへの通知、および tpsubscribe() に渡される ctl->flags パラメータで TPEVTRAN ビットの設定を使用しなかったサービス・ルーチンおよび安定記憶域上のキューにあるサブスクリプションのディパッチも行いますが、これはポスト元プロセスのトランザクションの一部としてではありません。
ポスト元がトランザクションの外部にある場合、イベントに関連するサービスが異常終了すると、tppost() は肯定応答のない一方向のポストになります。このような状況は、イベント用に TPEVTRAN が設定されている場合でも起こります (この設定には、tpsubscribe() に渡される ctl->flags パラメータを使用します)。ポスト元がトランザクション内にある場合は、イベントに関連するサービスが異常終了すると tppost() は TPESVCFAIL を返します。
次に、有効な flags の一覧を示します。
マルチスレッドのアプリケーションの場合、TPINVALIDCONTEXT 状態のスレッドは tppost() の呼び出しを発行できません。
戻り値
tppost() から成功して戻ると、tpurcode() には eventname の代わりにイベント・ブローカによってディスパッチされるイベント通知の数が設定されています (つまり、eventname に対するイベント表現の評価が成功し、data に対するフィルタ・ルールの評価が成功したサブスクリプションへのポストです)。tperrno() が TPESVCFAIL に設定されて戻った場合は、tpurcode() には、eventname の代わりにイベント・ブローカによってディスパッチされたトランザクション以外のイベント通知の数が設定されています。
異常終了すると、tppost() は -1 を返し、tperrno() を設定してエラー条件を示します。
エラー
異常終了時には、tppost() は tperrno() を次のいずれかの値に設定します(特に指定がない限り、障害は、呼び出し元のトランザクションに影響しません)。
関連項目
tpsubscribe(3c)、 tpunsubscribe(3c)、 EVENTS(5)、 TMSYSEVT(5)、 TMUSREVT(5)
|
Copyright © 2001 BEA Systems, Inc. All rights reserved.
|