![]() |
![]() |
|
|
一般的な通信呼び出しのエラー
一般的な通信呼び出しのエラーは、呼び出しが同期または非同期で行われたかどうかに関係なく、どのような通信呼び出しでも発生する可能性があります。TP-STATUS には、TPESVCFAIL、TPESVCERR、TPEBLOCK、または TPGOTSIG が返されます。
TPESVCFAIL および TPESVCERR エラー
TPCALL または TPGETRPLY を呼び出した結果、通信の応答部分が失敗すると、TP-STATUS に TPESVCERR または TPSEVCFAIL が返されます。TPRETURN に渡された引数でエラーが判別され、この呼び出しで実行する処理が決定されます。
引数の処理中に TPRETURN でエラーが発生すると、システムはエラーを元の要求元に返し、TP-STATUS に TPESVCERR を設定します。受信側では、TP-STATUS の値を調べてエラーの発生を確認します。システムでは、TPRETURN 呼び出しからのデータ送信は行われず、TPGETRPLY でエラーが発生した場合は、呼び出しハンドルが無効なものと見なされます。
TPRETURN で TPESVCERR エラーが発生していない場合、TP-RETURN-VAL に返された値で呼び出しが成功したか失敗したかを判断できます。アプリケーションで、TP-RETURN-VAL に TPFAIL が指定されると、システムは TP-STATUS に TPESVCFAIL を返し、呼び出し元にデータ・メッセージを送信します。TP-RETURN-VAL に TPSUCCESS が設定されると、呼び出し元に制御が正常に戻り、TP-STATUS は設定されず、呼び出し元がデータを受信します。
TPEBLOCK および TPGOTSIG エラー
TPEBLOCK および TPGOTSIG エラー・コードは、メッセージの要求側に返される場合も応答側に返される場合もあるので、すべての通信呼び出しに対して返される可能性があります。
ブロッキング状態が発生している場合に、要求を同期または非同期に送信するプロセスでブロッキング状態を無視するように TPPNOBLOCK が設定されていると、システムは TPEBLOCK を返します。たとえば、システムのキューがすべていっぱいになっている場合、要求が送信されるとブロッキング状態になります。
TPCALL がブロッキング状態を示していない場合は、通信の送信部分だけに影響します。要求の送信に成功すると、その呼び出しが応答を待っている間にブロッキング状態が存在したとしても、TPEBLOCK は返されません。
TPNOBLOCK を設定して呼び出しを行った場合、TPGETRPLY が応答を待っている間にブロッキング状態が発生すると、TPGETRPLY に TPEBLOCK が返されます。この状況は、メッセージがその時点で使用できない場合などに発生します。
TPGOTSIG エラーは、シグナルによってシステム・コールに割り込みが発生したことを示します。このような状況は、実際にはエラーではありません。TPSIGRSTRT が設定されていると、呼び出しは失敗せず、TP-STATUS に TPGOTSIG エラー・コードが返されます。
![]() |
![]() |
![]() |
|
Copyright © 2001 BEA Systems, Inc. All rights reserved.
|