bea ホーム | 製品 | dev2dev | support | askBEA |
![]() |
![]() |
|
![]() |
e-docs > Tuxedo > Tuxedo C リファレンス > セクション 3c - C 関数 |
Tuxedo C リファレンス
|
名前
tpgetrply()−以前の要求に対する応答を受信するためのルーチン
形式
#include <atmi.h>
int tpgetrply(int *cd, char **data, long *len, long flags)
機能説明
tpgetrply() は、以前に送られた要求に対する応答を返します。この関数の最初の引数 cd は、tpacall() が返す呼び出し記述子を指します。デフォルトの設定では、この関数は、*cd と一致する応答が届くか、タイムアウトが発生するまで処理を進めません。
data は、以前に tpalloc() で割り当てたバッファを指すポインタのアドレスでなければならず、len は tpgetrply() が正常に受信したデータ量を設定する long 型の値を指すようにしてください。正常終了時には、*data は、その応答を収めたバッファを指し、*len には、そのデータのサイズが入ります。FML と FML32 バッファは、通常最小サイズ 4096 バイトを確保します。応答が 4096 バイトより大きい場合には、バッファ・サイズは返されるデータを入れるのに十分な大きさに拡大します。リリース 6.4 では、バッファに対するデフォルトの割り当ては 1024 バイトです。また、最近使用したバッファの履歴情報が保持され、最適サイズのバッファをリターン・バッファとして再利用できます。
容量まで満たされていないかもしれない送信者側のバッファ (たとえば、FML または FML32 バッファ) は、送信に使用されたサイズになります。システムは、受信データのサイズを任意の量で拡大します。これは、受信者が送信者の割り当てたバッファ・サイズより小さく、送信されたデータのサイズより大きいバッファを受け取ることを意味します。
受信バッファのサイズは、増加することも減少することもあります。また、アドレスもシステムがバッファを内部で交換するごとに常に変更されます。応答バッファのサイズが変わったどうか (また変わったとしたらどれくらい変わったのか) を決定するには、tpgetrply() が *len とともに発行される前に、合計サイズを比べてください。バッファ管理の詳細については、C 言語アプリケーション・トランザクション・モニタ・インターフェイスについてを参照してください。
返されたときに *len が 0 の場合は、応答にはデータ部分がなく、*data やそれが指示するバッファは変更されていません。
*data または len が NULL であるとエラーになります。
マルチスレッド・プログラムの各コンテキスト内では、次の条件があります。
これらの制限のどちらかに違反する tpgetrply() 呼び出しを発行した場合は、-1 が返され、tperrno は TPEPROTO に設定されます。
次のような呼び出しの発行は受け付けられます。
次に、有効な flags の一覧を示します。
後に示す場合以外は、*cd はその応答を受信した後は有効でなくなります。
マルチスレッドのアプリケーションの場合、TPINVALIDCONTEXT 状態のスレッドは tpgetrply() の呼び出しを発行できません。
戻り値
tpgetrply() が正常に終了した場合、あるいは tperrno が TPESVCFAIL に設定されて終了した場合、tpurcode() には、tpreturn() の一部として送信されたアプリケーションが定義した値が入ります。
異常終了すると、tpgetrply() は -1 を返し、tperrno を設定してエラー条件を示します。
エラー
異常終了時には、tpgetrply() が tperrno に対して行う設定は、次のようになります。TPGETANY が設定されていない場合は、特に明記されていないかぎり、*cd は無効になります。TPGETANY が設定されている場合は、cd は異常が発生した応答の記述子を指します。応答が取り出せるようになる前にエラーが発生した場合には、cd は 0 を指します。また、特に明記しないかぎり、異常終了は呼び出し元のトランザクションが存在していても、それには影響しません。呼び出しが異常終了して tperrno に特定の値が設定されたときは、中間の ATMI 呼び出しを省略して引き続き tperrordetail() を呼び出すと、エラーに関する詳細な情報が提供されます。詳細については、tperrordetail(3c) リファレンス・ページを参照してください。
関連項目
tpacall(3c)、tpalloc(3c)、tpcancel(3c)、tperrordetail(3c)、tprealloc(3c)、tpreturn(3c)、tpstrerrordetail(3c)、tptypes(3c)
![]() |
![]() |
![]() |
![]() |
||
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |