bea ホーム | 製品 | dev2dev | support | askBEA
BEA Logo Tuxedo
 ドキュメントのダウンロード   サイトマップ   用語集 
検索
0

Tuxedo C リファレンス

 Previous Next Contents View as PDF  

tpunsubscribe(3c)

名前

tpunsubscribe()−イベントのサブスクリプションを削除する

形式

#include <atmi.h> 
int tpunsubscribe(long subscription, long flags)

機能説明

呼び出し元は tpunsubscribe() を使用して、BEA Tuxedo ATMI のイベント・ブローカのアクティブなサブスクリプションのリストからイベントのサブスクリプションまたはイベントのサブスクリプションの集合を削除します。subscription には、tpsubscribe() が返したイベントのサブスクリプションのハンドルを指定します。subscription をワイルドカード値の -1 に設定すると、tpunsubscribe() が、呼び出し元のプロセスが以前に行ったすべての非持続型のサブスクリプションを削除する指示になります。非持続型のサブスクリプションとは、tpsubscribe()ctl—>flags パラメータに TPEVPERSIST ビットを設定して行われたサブスクリプションのことです。持続タイプのサブスクリプションは、tpsubscribe() から返されたハンドルを使用することによってのみ削除できます。

ハンドル -1 を指定すると、呼び出し元のプロセスが行ったサブスクリプションのみを削除し、呼び出し元が以前に起動されたときに行ったサブスクリプションは削除しないことに注意してください (たとえば、異常終了した後で再起動したサーバでは、ワイルドカードを使用して以前のサーバが行ったサブスクリプションを削除することはできません)。

次に、有効な flags の一覧を示します。

TPNOBLOCK

ブロッキング条件が存在する場合は、サブスクリプションは削除されません。このような条件が発生すると、呼び出しは異常終了し、tperrno には TPEBLOCK が設定されます。TPNOBLOCK が指定されていないときにブロッキング条件が存在すると、呼び出し元は、その条件が解消されるか、またはタイムアウト (トランザクションまたはブロッキング) が発生するまではブロックされます。

TPNOTIME

このフラグは、呼び出し元が無制限にブロックでき、ブロッキング・タイムアウトの対象にならないようにすることを指定します。ただし、トランザクション・タイムアウトは発生する可能性があります。

TPSIGRSTRT

シグナルが関数内部のシステム・コールを中断すると、中断されたシステム・コールは出しなおされます。TPSIGRSTRT が指定されていない場合にシグナルがシステム・コールを中断させると、tpunsubscribe() は異常終了し、tperrno には TPGOTSIG が設定されます。

マルチスレッドのアプリケーションの場合、TPINVALIDCONTEXT 状態のスレッドは、tpunsubscribe() の呼び出しを発行できません。

戻り値

tpunsubscribe() が成功して戻ると、tpurcode() にはイベント・ブローカのアクティブなサブスクリプションのリストから削除されたサブスクリプションの数 (0 または 1 以上) が指定されます。tpurcode() に 1 より大きな数が設定されるのは、ワイルドカードのハンドルを -1 に指定した場合のみです。また、tpunsubscribe() が失敗して終了した場合にも、tpurcode() に 1 より大きな数が設定されることがあります (つまり、ワイルドカードのハンドルを指定して、イベント・ブローカがいくつかのサブスクリプションの削除に成功した後で、他のサブスクリプションを削除する際にエラーが発生したような場合です)。

異常終了すると、tpunsubscribe() は -1 を返し、tperrno を設定してエラー条件を示します。

エラー

異常終了時には、tpunsubscribe()tperrno を次のいずれかの値に設定します(特に記述した場合を除いては、エラーが呼び出し元のトランザクションに影響を及ぼすことはありません)。

[TPEINVAL]

無効な引数 (たとえば、subscription に無効なサブスクリプションのハンドル) が指定されました。

[TPENOENT]

BEA Tuxedo イベント・ブローカにアクセスできません。

[TPETIME]

このエラー・コードは、タイムアウトが発生したか、または現在のトランザクションがすでに「ロールバックのみ」とマークされているにもかかわらず tpunsubscribe() が試行されたことを示します。

呼び出し元がトランザクション・モードにある場合、トランザクションはすでに「ロールバックのみ」になっているか、またはタイムアウトが発生しています (中途終了マークが付けられる)。呼び出し元がトランザクション・モードにない場合、ブロッキング・タイムアウトが発生しています。ブロッキング・タイムアウトは、TPNOBLOCK または TPNOTIME、あるいはその両方を指定した場合は発生しません。

トランザクション・タイムアウトが発生すると、1 つの例外を除き、トランザクションがアボートされない限り、新しいリクエストを送信したり、未処理の応答を受信しようとしても、TPETIME で異常終了します。1 つの例外とは、ブロックされず、応答を期待せず、かつ呼び出し元のトランザクションのために送信されない (つまり、TPNOTRANTPNOBLOCK および TPNOREPLY が設定された状態で tpacall() が呼び出される場合) 要求です。

トランザクション ATMI 呼び出しがトランザクション内部で失敗すると、そのトランザクションは TX_ROLLBACK_ONLY 状態になります。ほとんどの場合、この状態はタイムアウトと同じものとして扱われます。このトランザクションの以降の ATMI 呼び出しは、TPETIME で異常終了します (前の段落で説明した例外を除く)。

[TPEBLOCK]

ブロッキング状態のため、TPNOBLOCK が指定されました。

[TPGOTSIG]

シグナルを受け取りましたが、TPSIGRSTRT が指定されていません。

[TPEPROTO]

tpunsubscribe() が不正に呼び出されました。

[TPESYSTEM]

BEA Tuxedo システムのエラーが発生しました。エラーの正確な内容がログ・ファイルに書き込まれます。

[TPEOS]

オペレーティング・システムのエラーが発生しました。

関連項目

tppost(3c)tpsubscribe(3c)EVENTS(5)EVENT_MIB(5) に関する追加情報TMSYSEVT(5)TMUSREVT(5)

 

Back to Top Previous Next
Contact e-docsContact BEAwebmasterprivacy