BEA Logo BEA Tuxedo Release 8.0

  BEA ホーム  |  イベント  |  ソリューション  |  パートナ  |  製品  |  サービス  |  ダウンロード  |  ディベロッパ・センタ  |  WebSUPPORT

 

   Tuxedoホーム   |   BEA Tuxedo C リファレンス   |   先頭へ   |   前へ   |   次へ   |   目次

 


tpbroadcast(3c)

名前

tpbroadcast()-名前によって通知をブロードキャストするルーチン

形式

#include <atmi.h>

int tpbroadcast(char *lmid, char *usrname, char *cltname,
char *data, long len, long flags)

機能説明

tpbroadcast() は、クライアント・プロセスやサーバ・プロセスがシステム内に登録されているクライアントに任意通知型メッセージを送ることができるようにします。ターゲット・クライアント・セットは、tpbroadcast() に渡されるワイルドカード以外の識別子すべてと一致するクライアントで構成されます。ワイルドカードは、識別子を指定するのに使用します。

lmidusrname および cltname は、ターゲット・クライアント・セットの選択に使用する論理識別子です。引数の NULL 値は、その引数のワイルドカードとなります。ワイルドカード引数は、そのフィールドの全クライアント識別子と一致します。長さ 0 の文字列の引数は、長さ 0 のクライアント識別子とのみ一致します。各識別子は、システムが有効とみなすよう定義されたサイズの制約事項を満たさなければなりません。つまり、各識別子の長さは 0 から MAXTIDENT 文字まででなければなりません。

要求のデータ部は、data によって示され、以前に tpalloc() によって割り当てられたバッファです。len には送信するデータの大きさを指定します。ただし、data が長さの指定を必要としないタイプのバッファを指す場合 (たとえば、FML フィールド化バッファ)、len は 0 でかまいません。また、data は NULL であってもかまいません。この場合、len は無視されます。このバッファは、他の送受信されるメッセージと同様、型付きバッファ・スイッチ・ルーチンで処理されます。たとえば、符号化/復号化は自動的に行われます。

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

TPNOBLOCK

ブロッキング条件が存在する場合、要求は送られません (たとえば、メッセージを受け取るバッファがいっぱいのときなど)。

TPNOTIME

このフラグは、呼び出し元が無制限にブロックでき、ブロッキング・タイムアウトの対象にならないようにすることを指定します。トランザクション・タイムアウトは依然として発生する可能性があります。

TPSIGRSTRT

シグナルが関数内部のシステム・コールを中断すると、中断されたシステム・コールは出しなおされます。tpbroadcast() が正常終了した場合には、メッセージはシステムに渡され、選択されたクライアントに転送されます。tpbroadcast() は、選択された各クライアントにメッセージが送られるのを待機しません。

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

戻り値

異常終了すると、tpbroadcast() は -1 を返し、tperrno() を設定してエラー条件を示します。

エラー

異常終了には、tpbroadcast() はアプリケーション・クライアントにブロードキャスト・メッセージを送信せず、tperrno() を次のいずれかの値に設定します。

[TPEINVAL]

無効な引数が与えられました (たとえば、識別子が長すぎる、あるいはフラグが無効など)。無効な LMID を使用すると、tpbroadcast() は正常に働かず、TPEINVAL が返されます。ただし、存在しないユーザやクライアント名の場合は、誰にもブロードキャストされないだけでこのルーチンは正常に終了します。

[TPETIME]

ブロッキング・タイムアウトが生じましたが、TPNOBLOCKTPNOTIME も指定されていませんでした。

[TPEBLOCK]

呼び出し時にブロッキング条件が検出されましたが、TPNOBLOCK が指定されていました。

[TPGOTSIG]

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

[TPEPROTO]

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

[TPESYSTEM]

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

[TPEOS]

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

移植性

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

使用法

シグナル・ベースの通知方法を選択したクライアントは、シグナルに関する制約から、システムによるシグナルを受け取ることはできません。このような状態で通知がなされた場合、システムは、選択されたクライアントに対する通知方法をディップインに切り替えることを示すログ・メッセージを生成し、以後、クライアントにはディップイン方式で通知が行われることになります(通知方法の詳細については、UBBCONFIG()RESOURCES セクションの NOTIFY パラメータの説明を参照してください)。

クライアントのシグナル通知は、必ずシステムによって行われるので、通知呼び出しの起動元がどこであっても、通知の動作は一貫しています。したがって、シグナル・ベースの通知を使用するには以下の条件が必要です。

ID は、アプリケーション管理者のアプリケーションのコンフィギュレーションの一部として識別されます。

あるクライアントに対してシグナル・ベースの通知方法を選択すると、いくつかの ATMI 呼び出しは異常終了します。TPSIGRSTRT の指定がなければ任意通知型メッセージを受け取るため、TPGOTSIG を返します。通知方法の選択方法については、UBBCONFIG(5) および tpinit(3c) を参照してください。

関連項目

tpalloc(3c)tpinit(3c)tpnotify(3c)tpterm(3c)UBBCONFIG(5)

 

先頭へ戻る 前のトピックへ 次のトピックへ