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

Tuxedo C リファレンス

 Previous Next Contents View as PDF  

tpsetunsol(3c)

名前

tpsetunsol()−任意通知型メッセージの処理方式の設定

形式

#include <atmi.h>
void (*tpsetunsol (void (_TMDLLENTRY *)(*disp) (char *data, long len, long flags))) (char *data, long len, long flags)

機能説明

tpsetunsol() は、任意通知型メッセージが BEA Tuxedo ATMI システムのライブラリによって受け取られる際に呼び出すルーチンをクライアントが指定できるようにします。tpsetunsol() の最初の呼び出しの前に、BEA Tuxedo ATMI システムのライブラリがクライアントのために受け取った任意通知型メッセージは記録されますが、無視されます。NULL 関数ポインタを使用する tpsetunsol() を呼び出した場合も、同じ結果になります。システムが通知や検出のために使用する方法は、アプリケーションのデフォルトの設定によって決まります (RESOURCE セクションの NOTIFY パラメータ)。このデフォルトの設定は、クライアントごとに変更できます (tpinit(3c) を参照)。

tpsetunsol() の呼び出し時に渡される関数ポインタは、所定のパラメータ定義に準拠していなければなりません。data は受け取った型付きバッファを指し、len はそのデータの長さを指定します。flags は現時点では使用されていません。data は、通知と一緒にデータが渡されない場合には NULL になります。data は、クライアントが認識しないタイプ/サブタイプのバッファであることがありますが、その場合、メッセージ・データは不明瞭になります。

data はアプリケーション・コードで解放することはできません。ただし、システムはこれを解放し、終了後、データ領域を無効にします。

アプリケーションの任意通知型メッセージ処理ルーチン内での処理は、次の BEA Tuxedo ATMI 関数に限定されています。tpalloc()tpfree()tpgetctxt()tpgetlev()tprealloc()、および tptypes()

マルチスレッド・プログラミング環境では、任意通知型メッセージ処理ルーチンが tpgetctxt() を呼び出して、別のスレッドを作成し、そのスレッドに適切なコンテキストの tpsetctxt() を呼び出し、新しいスレッドに、クライアントが使用できる ATMI 関数をすべて使用させることができます。

tpsetunsol() がコンテキストに関連していないスレッドから呼び出されると、新しく生成されるすべての tpinit() コンテキストに対して、プロセスごとのデフォルトの任意通知型メッセージ・ハンドラが作成されます。これは、既にシステムに関連付けられているコンテキストには影響しません。特定のコンテキストは、コンテキストがアクティブのときに tpsetunsol() を再度呼び出して、そのコンテキストの任意通知型メッセージ・ハンドラを変更することができます。プロセス単位のデフォルトの任意通知型メッセージ・ハンドラは、コンテキストに現在関連付けされていないスレッドで tpsetunsol() を再度呼び出すと、変更できます。

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

戻り値

tpsetunsol() は、正常終了時には、任意通知型メッセージ処理ルーチンの以前の設定条件を返します(NULL も正常な戻り値の 1 つであり、メッセージ処理関数を事前に設定していなかったことを示します)。

異常終了すると、この関数は TPUNSOLERR を返し、tperrno を設定してエラー条件を示します。

エラー

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

[TPEPROTO]

tpsetunsol() が正しくないコンテキストで呼び出されました。たとえば、サーバ内部から呼び出されています。

[TPESYSTEM]

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

[TPEOS]

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

移植性

tpnotify(3c) で説明したインターフェイスはすべて、ネイティブ・サイトの UNIX システム・ベースおよび Windows のプロセッサ上で利用できます。さらに、ルーチン tpbroadcast()tpchkunsol() は、関数 tpsetunsol() ともとに、UNIX システムおよび MS-DOS ベースのプロセッサ上で利用することができます。

関連項目

tpinit(3c)tpterm(3c)

 

Back to Top Previous Next
Contact e-docsContact BEAwebmasterprivacy