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で使う場合の注意事項』
-
『tpadvertise()はSPPでだけ呼び出せます。サーバの起動時には,ユーザサービス定義で指定した,すべてのサービスが自動的に広告されます。この関数のユーザサービス定義で指定してあるサービス名と関数の組み合わせだけ広告できます。』
-
『OpenTP1では,tpadvertise()を呼び出すUAPのサービスグループと,広告されているサービスを広告したUAPのサービスグループが同じである場合は,広告済みと見なして,関数は正常に終了します。サービスグループが一致していない場合は,関数はエラーリターンします。』
-
『OSI TP通信をするXATMIのエラーは,従来のTCP/IPとエラー動作が異なる場合があります。』