Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 OpenTP1 プログラム作成リファレンス C言語編


tpadvertise

〈このページの構成〉

名称

サービス名の広告

形式

ANSI C,C++の形式

#include <xatmi.h>
int  tpadvertise(char *svcname,void(*func)(TPSVCINFO *))

K&R版 Cの形式

#include <xatmi.h>
int   tpadvertise(svcname,func)
char  *svcname;
void  (*func)();

機能

関数tpadvertise()は,サーバで提供するサービスを広告します。この関数を呼び出さない場合,サーバのサービスは,ブート時に広告されて,シャットダウンされたときに広告を取り消されます。

関数tpadvertise()は,svcnameのサーバを広告します。svcnameは15文字以下にしてください。ただし,NULLやNULL文字列("")は使えません。長過ぎる名称でも有効となりますが,15文字に切り詰められます。ユーザは,切り詰められた名称がほかのサービス名と一致しないようにしてください。

引数のfuncは,サービス関数のアドレスです。この関数は,svcnameの要求がサーバに受信されたら,いつでも起動されます。引数のfuncには,NULLを設定しないでください。

svcnameがすでにそのサーバで広告されていて,funcが広告されている関数と一致した場合は,tpadvertise()は正常にリターンします(切り詰められた名称が,すでに広告されていた名称と一致していた場合も含みます)。しかし,もしそのsvcnameがすでにそのサーバで広告されていても,funcが広告されている関数と一致しない場合は,エラーリターンします(切り詰められた名称が,すでに広告されている名称と一致していた場合にも起こります)。

『引数』

『●svcname

要求するサービスのサービス名を設定します。』

『●(*func)()

サービス関数のアドレスです。』

リターン値

エラー時には,-1をリターンして,tperrnoにエラーの状態を示す値を設定します。

エラー

次のような場合,tpadvertise()はエラーリターンして,次のうちどれか一つの値をtperrnoに設定します。

リターン値

リターン値(数値)

意味

TPEINVAL

4

引数svcnameがNULLかNULL文字(""),またはfuncにNULLが設定されています。

TPELIMIT

5

領域の制限で,引数svcnameを広告できません。

TPEOS

7

オペレーティングシステムにエラーが起こりました。厳密なエラーの性質は,product-specificな方法で定義されます。

TPEPROTO

9

tpadvertise()が間違った状況で呼ばれました。

TPESYSTEM

12

コミュニケーションリソースマネジャシステムでエラーが起こりました。

厳密なエラーの性質は,product-specificな方法で定義されます。

TPEMATCH

23

引数svcnameはすでにそのサーバで広告されていますが,関数はfuncで示されているものではありません。関数が失敗しても,svcnameは,現在広告している関数を広告したままです(つまり,funcは現在広告されている関数と置き換わりません)。

関連項目

tpservice(),tpunadvertise().

『OpenTP1で使う場合の注意事項』

  1. 『tpadvertise()はSPPでだけ呼び出せます。サーバの起動時には,ユーザサービス定義で指定した,すべてのサービスが自動的に広告されます。この関数のユーザサービス定義で指定してあるサービス名と関数の組み合わせだけ広告できます。』

  2. 『OpenTP1では,tpadvertise()を呼び出すUAPのサービスグループと,広告されているサービスを広告したUAPのサービスグループが同じである場合は,広告済みと見なして,関数は正常に終了します。サービスグループが一致していない場合は,関数はエラーリターンします。』

  3. 『OSI TP通信をするXATMIのエラーは,従来のTCP/IPとエラー動作が異なる場合があります。』