|
|
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() を呼び出した場合も、同じ結果になります。システムが通知や検出のために使用する方法は、アプリケーションのデフォルトの設定によって決まります (RESOURCES セクションの NOTIFY パラメータ)。このデフォルトの設定は、クライアントごとに変更できます (tpinit(3c) を参照)。
tpsetunsol() の呼び出し時に渡される関数ポインタは、所定のパラメータ定義に準拠していなければなりません。data は受け取った型付きバッファを指し、len はそのデータの長さを指定します。flags は現時点では使用されていません。data は、通知と一緒にデータが渡されない場合には NULL になります。data は、クライアントが認識しないタイプ/サブタイプのバッファであることがありますが、その場合、メッセージ・データは不明瞭になります。
data はアプリケーション・コードで解放することはできません。ただし、システムはこれを解放し、終了後、データ領域を無効にします。
アプリケーションの任意通知型メッセージ処理ルーチン内での処理は、次の BEA Tuxedo ATMI 関数に限定されています。tpalloc() tpfree() tpgetctxt() tpgetlev() tprealloc() tptypes()
マルチスレッド・プログラミング環境では、任意通知型メッセージ処理ルーチンが tpgetctxt() を呼び出して、別のスレッドを作成し、そのスレッドに適切なコンテキストの tpsetctxt() を呼び出し、新しいスレッドに、クライアントが使用できる ATM 関数をすべて使用させることができます。
tpsetunsol() がコンテキストに関連していないスレッドから呼び出されると、新しく生成されるすべての tpinit() コンテキストに対して、プロセスごとのデフォルトの任意通知型メッセージ・ハンドラが作成されます。これは、既にシステムに関連付けられているコンテキストには影響しません。特定のコンテキストは、コンテキストがアクティブのときに tpsetunsol() を再度呼び出して、そのコンテキストの任意通知型メッセージ・ハンドラを変更することができます。プロセスごとのデフォルトの任意通知型メッセージ・ハンドラは、コンテキストに現在関連していないスレッドで tpsetunsol() を再度呼び出して変更することができます。
マルチスレッドのアプリケーションの場合、TPINVALIDCONTEXT 状態のスレッドは tpsetunsol() の呼び出しを発行できません。
戻り値
tpsetunsol() は、正常終了時には、任意通知型メッセージ処理ルーチンの以前の設定条件を返します(NULL も正常な戻り値の 1 つであり、メッセージ処理関数を事前に設定していなかったことを示します)。
異常終了すると、この関数は TPUNSOLERR を返し、tperrno() を設定してエラー条件を示します。
エラー
異常終了時には、tpsetunsol() は tperrno() を次のいずれかの値に設定します。
移植性
tpnotify(3c) で説明したインターフェイスはすべて、ネイティブ・サイトの UNIX システム・ベースおよび Windows のプロセッサ上で利用できます。さらに、ルーチン tpbroadcast() と tpchkunsol() は、関数 tpsetunsol() ともとに、UNIX システムおよび MS-DOS ベースのプロセッサ上で利用することができます。
関連項目
|
Copyright © 2001 BEA Systems, Inc. All rights reserved.
|