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

Tuxedo C リファレンス

 Previous Next Contents View as PDF  

tpconnect(3c)

名前

tpconnect()−会話型サービス・ルーチンの接続を設定するルーチン

形式

#include <atmi.h> 

int tpconnect(char *svc, char *data, long len, long flags)

機能説明

tpconnect() により、プログラムは会話型サービス svc との半二重接続をセットアップすることができます。この名前は、会話型サーバがポストした会話型サービス名の 1 つでなければなりません。

呼び出し元は、接続セットアップ処理の一部として、アプリケーション定義データをリスニング・プログラムに渡すことができます。呼び出し元がデータを渡す選択をした場合には、datatpalloc() が以前に割り当てたバッファを指していなければなりません。len には送信バッファの大きさを指定します。ただし、data が長さの指定を必要としないバッファを指している場合 (FML フィールド化バッファなど)、len は無視されます (0 でかまいません)。また、data は NULL の場合もあります。この場合、len は無視されます (アプリケーション・データは会話型サービスに渡されません)。data のタイプとサブタイプは、svc が認識するタイプおよびサブタイプと一致しなければなりません。datalen は、該当サービスの呼び出し時に使用する TPSVCINFO 構造体を介して会話型サービスに渡されます。また、サービスはこのデータの取得に tprecv() を呼び出す必要はありません。

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

TPNOTRAN

呼び出しプロセスがトランザクション・モードにあり、このフラグが設定されていると、svc が呼び出されたときに、このプロセスは呼び出し元のトランザクションの一部として実行されません。svc が依然としてトランザクション・モードで起動される場合がありますが、それは同じトランザクションでないことに注意してください。svc は、コンフィギュレーション属性で、自動的にトランザクション・モードで呼び出されるようにすることができます。このフラグを設定するトランザクション・モードの呼び出し元は、トランザクション・タイムアウトの影響を受けます。サービスが異常終了した場合でも、起動時にこのフラグが設定されていれば、呼び出し元のトランザクションに影響は及びません。

TPSENDONLY

呼び出し元は、最初にそれがデータの送信のみを行え、呼び出されたサービスはデータの受信のみを行えるよう接続を設定しなければならないことがあります (つまり、呼び出し元が当初の接続の制御権を有するように)。TPSENDONLY または TPRECVONLY のいずれかを指定しなければなりません。

TPRECVONLY

呼び出し元は、それがデータの受信のみを行え、呼び出されたサービスがデータの送信のみを行えるように接続を設定しなければならないことがあります (つまり、呼び出されるサービスが当初、接続の制御権を有するように)。TPSENDONLY または TPRECVONLY のいずれかを指定しなければなりません。

TPNOBLOCK

ブロッキング条件が存在する場合、接続が設定されておらず、データが送信されません (たとえば、メッセージが送信されるときに使用されるデータ・バッファがいっぱいである場合)。このフラグは、tpconnect() の送信部分にだけ適用されます。関数は、サーバからの承認を待つ間ブロックする場合があります。TPNOBLOCK が指定されておらず、ブロッキング条件が存在する場合、条件の解除、またはブロッキング・タイムアウトあるいはトランザクション・タイムアウトが発生するまで呼び出し元はブロックされます。

TPNOTIME

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

TPSIGRSTRT

ルーチン内部のシステム・コールがシグナルによって中断された場合、中断された呼び出しが再発行されます。

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

戻り値

tpconnect() が正常に終了した場合、以後の呼び出しでの接続を指すのに使用する記述子を返します。エラー時には、-1 を返し、tperrno を設定してエラー条件を示します。

エラー

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

[TPEBLOCK]

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

[TPEINVAL]

無効な引数が与えられました (たとえば、svc が NULL、data が NULL でなく tpalloc() で割り当てられたバッファを指していない、TPSENDONLY または TPRECVONLYflags に指定されていない、あるいは flags が無効であるなど)。

[TPEITYPE]

data のタイプおよびサブ・タイプは、svc が受け付けるタイプあるいはサブ・タイプの 1 つでありません。

[TPELIMIT]

未終了の接続の最大数に達したため、呼び出し元の要求が送られませんでした。

[TPENOENT]

svc が存在しないか、会話型サーバでないか、または名前が "." で始まるため、svc への接続を開始できません

[TPEOS]

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

[TPEPROTO]

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

[TPESYSTEM]

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

[TPETIME]

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

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

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

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

[TPETRAN]

svc はトランザクションをサポートしないプログラムに属していますが、TPNOTRAN が設定されていませんでした。

[TPGOTSIG]

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

関連項目

tpalloc(3c)tpdiscon(3c)tprecv(3c)tpsend(3c)tpservice(3c)

 

Back to Top Previous Next
Contact e-docsContact BEAwebmasterprivacy