8.3.1 名前によるメッセージのブロードキャスト

tpbroadcast(3c)を使用すると、アプリケーションの登録されたクライアントにメッセージが送信されます。これは、サービスまたは別のクライアントから呼び出すことができます。登録されたクライアントとは、tpinit()を呼び出したが、まだtpterm()を呼び出してはいないクライアントのことです。

tpbroadcast()関数の呼出しには、次のシグネチャを使用します:

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

次の表は、tpbroadcast()関数の引数を示しています。

表8-3 tpbroadcast()関数の引数

引数 説明
lmid クライアントの論理マシン識別子を指すポインタ。NULL値をワイルドカードとして使用できるので、複数のクライアントにメッセージを送信できます。
usrname クライアント・プロセスのユーザー名が存在する場合、そのユーザー名を指すポインタ。NULL値をワイルドカードとして使用できるので、複数のクライアントにメッセージを送信できます。
cltname クライアント・プロセスのクライアント名が存在する場合、そのクライアント名を指すポインタ。NULL値をワイルドカードとして使用できるので、複数のクライアントにメッセージを送信できます。
data メッセージの内容を指すポインタ。
len メッセージ・バッファのサイズ。dataが自己記述型のバッファ・タイプ(FMLなど)を指す場合、lenに0を設定できます。
flags フラグのオプション。使用できるフラグについては、『Oracle Tuxedo ATMI C関数リファレンス』tpbroadcast(3c)に関する項を参照してください。

次のリストは、すべてのクライアントを送信先としてtpbroadcast()を呼び出す方法を示しています。送信メッセージは、STRINGバッファ内にあります。

tpbroadcast( )の使用のリスト

char *strbuf;

if ((strbuf = tpalloc("STRING", NULL, 0)) == NULL) {
         error routine   
         }  
(void) strcpy(strbuf, "hello, world"); 

if (tpbroadcast(NULL, NULL, NULL, strbuf, 0, TPSIGRSTRT) == -1)
              error routine