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

Tuxedo C リファレンス

 Previous Next Contents View as PDF  

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]

ブロッキング・タイムアウトが発生しました。ブロッキング・タイムアウトは、TPNOBLOCK または TPNOTIME、あるいはその両方を指定した場合は発生しません。

[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)

 

Back to Top Previous Next
Contact e-docsContact BEAwebmasterprivacy