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

Tuxedo C リファレンス

 Previous Next Contents View as PDF  

tpdiscon(3c)

名前

tpdiscon()−会話型サービスの接続を切断するルーチン

形式

#include <atmi.h>
int tpdiscon(int cd)

機能説明

tpdiscon() は、cd で指定された接続をただちに切断し、接続の他方の側で TPEV_DISCONIMM イベントを生成します。

tpdiscon() は、会話の起動側からしか呼び出せません。tpdiscon() は、呼び出しに使用された記述子に対応する会話型サービス内からは呼び出せません。会話型サービスは tpreturn() を使用して、会話の該当部分が完了したことを通知しなければなりません。同様に、会話型サービスとのやりとりを行うプログラムが tpdiscon() を呼び出す場合でも、そのサービスに tpreturn() で接続を切断するようにしてください。これによって、正しい結果が得られます。

tpdiscon() を使用すると、接続はただちに切断されます (すなわち、正常終了ではなく、アボート)。したがって、宛先に届いていないデータは失われます。tpdiscon() は、接続の他方の側のプログラムが呼び出し元のトランザクションに参加している場合でも発行されます。この場合、このトランザクションはアボートします。また、呼び出し元は、tpdiscon() が呼び出されるときにその接続の制御権をもっている必要はありません。

戻り値

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

エラー

異常終了時には、tpdiscon()tperrno を次のいずれかの値に設定します。

[TPEBADDESC]

cd が無効であるか、会話型サービスに使用された記述子です。

[TPETIME]

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

呼び出し元がトランザクション・モードにある場合、トランザクションはすでに「ロールバックのみ」になっているか、またはタイムアウトが発生しています (中途終了マークが付けられる)。呼び出し元のトランザクションで接続時に tpdiscon() を呼び出すと、tpdiscon() が正常に呼び出されても、トランザクションが「アボートのみ」とマークされる可能性があります。

呼び出し元がトランザクション・モードにない場合、ブロッキング・タイムアウトが発生しています。

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

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

[TPEPROTO]

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

[TPESYSTEM]

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

[TPEOS]

オペレーティング・システムのエラーが発生しました。記述子は無効になります。

関連項目

tpabort(3c)tpcommit(3c)tpconnect(3c)tprecv(3c)tpreturn(3c)tpsend(3c)

 

Back to Top Previous Next
Contact e-docsContact BEAwebmasterprivacy