トランザクショナル分散オブジェクト基盤 TPBroker Object Transaction Monitor プログラマーズガイド

[目次][索引][前へ][次へ]

TSCAdm(C++)

TSCAdmはシステム提供クラスです。

TSCAdmは,アプリケーションプログラムの初期化処理,TSCClientの取得,およびTSCServerの取得をするクラスです。

形式

 
class TSCAdm
{
 public:
  static void initServer(TSCInt argc,
                         TSCChar *argv[],
                         CORBA::ORB_ptr orb);
  static void initClient(TSCInt argc,
                         TSCChar *argv[],
                         CORBA::ORB_ptr orb);
 
  static void serverMainloop();
  static void shutdown();
 
  static void endServer();
  static void endClient();
 
  static TSCClient_ptr getTSCClient(TSCDomain_ptr tsc_domain,
                                    TSCInt way);
  static TSCClient_ptr getTSCClient(TSCDomain_ptr tsc_domain);
 
  static TSCServer_ptr getTSCServer(TSCDomain_ptr tsc_domain);
 
  static void releaseTSCClient(TSCClient_ptr tsc_client);
  static void releaseTSCServer(TSCServer_ptr tsc_server);
 
  static TSCInt get_status();
};

インクルードファイル

 
#include <tscadm.h>

メソッド

●static void initServer(TSCInt argc,

                                       TSCChar *argv[],
                                       CORBA::ORB_ptr orb)
 
項目 型・意味
引数 TSCInt argc コマンド引数の数
TSCChar *argv[] コマンド引数
CORBA::ORB_ptr orb ORBのリファレンス
戻り値 ありません。
例外 TSCBadInvOrderException
TSCBadParamException
TSCCommFailureException
TSCInitializeException
TSCInternalException
TSCNoMemoryException
TSCNoPermissionException
TSCNoResourcesException

サーバアプリケーションの初期化処理を実行します。このメソッドは,プロセスで1回だけ発行できます。TSCAdm::endServer()メソッド,またはTSCAdm::endClient()メソッドの発行によって終了処理したあとでも,このメソッドは発行できません。

このメソッドのargc引数にはプロセスのmain()関数の第1引数を,argv引数にはmain()関数の第2引数をそれぞれそのまま指定してください。プロセス開始時にコマンドラインで指定された情報を削除または変更してargc引数およびargv引数に指定すると,正しく動作しない場合があります。tscstartprcコマンドを使用して開始したサーバアプリケーションのコマンドラインには,tscstartprcコマンドに指定したコマンドライン引数がすべて渡されます。

●static void initClient(TSCInt argc,

                                          TSCChar *argv[],
                                          CORBA::ORB_ptr orb)
 
項目 型・意味
引数 TSCInt argc コマンド引数の数
TSCChar *argv[] コマンド引数
CORBA::ORB_ptr orb ORBのリファレンス
戻り値 ありません。
例外 TSCBadInvOrderException
TSCBadParamException
TSCCommFailureException
TSCInitializeException
TSCInternalException
TSCNoMemoryException
TSCNoPermissionException
TSCNoResourcesException

クライアントアプリケーションの初期化処理を実行します。TSCAdm::initServer()メソッドを発行すれば,TSCAdm::initClient()メソッドを発行しなくてもクライアントアプリケーションの機能を使用できるようになります。

このメソッドのargc引数にはプロセスのmain()関数の第1引数を,argv引数にはmain()関数の第2引数をそれぞれそのまま指定してください。プロセス開始時にコマンドラインで指定された情報を削除または変更してargc引数およびargv引数に指定すると,正しく動作しないことがあります。

このメソッドは,TSCAdm::endClient()メソッドの発行によって終了処理をした場合は再発行できますが,TSCAdm::endServer()メソッドの発行によって終了処理をしたあとは再発行できません。TSCAdm::endClient()メソッドの発行後にこのメソッドを再発行した場合,2回目以降の発行で指定したargc引数およびargv引数の値は無効となり,初回の発行で指定した値が有効になります。ただし,このメソッドを複数回発行するとクライアントアプリケーションの性能に影響を与えるため,推奨できません。

●static void serverMainloop()

項目 型・意味
戻り値 ありません。
例外 TSCBadInvOrderException
TSCCommFailureException

リクエストを受信待ち状態にします。このメソッドはサーバアプリケーションでだけ発行できます。

●static void shutdown()

項目 型・意味
戻り値 ありません。
例外 TSCBadInvOrderException

リクエストの受信待ち状態を解除します。このメソッドはサーバアプリケーションでだけ発行できます。

●static void endServer()

項目 型・意味
戻り値 ありません。
例外 TSCBadInvOrderException
TSCInternalException
TSCNoMemoryException

サーバアプリケーションの終了処理を実行します。

このメソッドはプロセスで1回だけ発行できます。このメソッド発行後はそのプロセスでOTMの機能は使用しないでください。

●static void endClient()

項目 型・意味
戻り値 ありません。
例外 TSCBadInvOrderException
TSCInternalException
TSCNoMemoryException

クライアントアプリケーションの終了処理を実行します。

このメソッドの発行後は,そのプロセスでOTMまたはOTM - Clientの機能を使用できません。また,このメソッドで例外が発生した場合は,クライアントアプリケーションを終了させる必要があります。

●static TSCClient_ptr getTSCClient(TSCDomain_ptr tsc_domain,

                                                            TSCInt way)
 
項目 型・意味
引数 TSCDomain_ptr tsc_domain TSCDomainのリファレンス
TSCInt way 接続経路
戻り値 TSCClientオブジェクトリファレンス
例外 TSCBadInvOrderException
TSCBadParamException
TSCCommFailureException
TSCInternalException
TSCNoMemoryException
TSCNoPermissionException
TSCNoResourcesException
TSCTransientException

指定したTSCDomainを基に,リクエストするTSCデーモンのTSCClientのリファレンスを取得するメソッドです。

wayには,接続経路として,次に示すどちらかを指定します。

ファイル検索方式でマルチノードリトライ接続を実行する場合,このメソッドに指定したTSCDomainおよびwayの組み合わせに一致する情報が,接続先情報ファイル中に記述されていなければなりません。一致する情報が接続先情報ファイルにない場合,TSCBadParamException例外が発生します。なお,ファイル検索方式でマルチノードリトライ接続を実行するには,アプリケーションプログラムの開始時に,次に示すようにコマンドオプション引数を指定します。

●static TSCClient_ptr getTSCClient(TSCDomain_ptr tsc_domain)

項目 型・意味
引数 TSCDomain_ptr tsc_domain TSCDomainのリファレンス
戻り値 TSCClientオブジェクトリファレンス
例外 TSCBadInvOrderException
TSCBadParamException
TSCCommFailureException
TSCInitializeException
TSCInternalException
TSCNoMemoryException
TSCNoPermissionException
TSCNoResourcesException
TSCTransientException

指定したTSCDomainを基に,リクエストするTSCデーモンのTSCClientのリファレンスを取得するメソッドです。接続経路には,アプリケーションプログラムの開始時に,コマンドオプション引数-TSCRequestWayに指定した値を使用します。なお,シングルスレッドライブラリを使用するアプリケーションプログラムの場合,TSCデーモンに直結したリクエストはできません。

ファイル検索方式でマルチノードリトライ接続を実行する場合,このメソッドに指定したTSCDomain,およびコマンドオプション引数-TSCRequestWayの組み合わせに一致する情報が,接続先情報ファイル中に記述されていなければなりません。一致する情報が接続先情報ファイルにない場合,TSCBadParamException例外が発生します。なお,ファイル検索方式でマルチノードリトライ接続を実行するには,アプリケーションプログラムの開始時に,次に示すようにコマンドオプション引数を指定します。

●static TSCServer_ptr getTSCServer(TSCDomain_ptr tsc_domain)

項目 型・意味
引数 TSCDomain_ptr tsc_domain TSCDomainのリファレンス
戻り値 TSCServerオブジェクトリファレンス
例外 TSCBadInvOrderException
TSCBadParamException
TSCCommFailureException
TSCInternalException
TSCNoMemoryException
TSCNoPermissionException
TSCNoResourcesException

指定したTSCDomainを基に,自サーバへリクエストを振り分けるTSCデーモンのTSCServerのリファレンスを取得するメソッドです。

●static void releaseTSCClient(TSCClient_ptr tsc_client)

項目 型・意味
引数 TSCClient_ptr tsc_client TSCClientオブジェクトリファレンス
戻り値 ありません。
例外 TSCBadInvOrderException
TSCBadParamException
TSCCommFailureException
TSCInternalException
TSCNoMemoryException
TSCNoPermissionException

TSCClientを解放します。

●static void releaseTSCServer(TSCServer_ptr tsc_server)

項目 型・意味
引数 TSCServer_ptr tsc_server TSCServerオブジェクトリファレンス
戻り値 ありません。
例外 TSCBadInvOrderException
TSCBadParamException
TSCCommFailureException
TSCInternalException
TSCNoMemoryException
TSCNoPermissionException

TSCServerを解放します。

●static TSCInt get_status()

項目 型・意味
戻り値 プロセスステータス

運用管理で管理するプロセスステータスを返します。プロセスステータスを示す定数を表3-3,表3-4に示します。

表3-3 TSCAdmクラスで検出するクライアントアプリケーションのプロセスステータス(C++)

定数名 状態 内容
TSCAdm::TSC_ADM_PRC_LIVING オンライン稼働中 initClient()を発行してから,終了要求を受け付けるまでの状態
TSCAdm::TSC_ADM_PRC_DYING 正常終了処理中 終了要求を受け付けてから,endClient()を発行するまでの状態
TSCAdm::TSC_ADM_PRC_DEAD 終了 initClient()の発行以前,またはendClient()の発行以降の状態

クライアントアプリケーションの状態遷移については,マニュアル「TPBroker Object Transaction Monitor ユーザーズガイド」のクライアントアプリケーションの状態の検出に関する説明を参照してください。

表3-4 TSCAdmクラスで検出するサーバアプリケーションのプロセスステータス(C++)

定数名 状態 内容
TSCAdm::TSC_ADM_PRC_LIVING 正常開始処理中 initServer()を発行してから,serverMainloop()を発行するまでの状態
TSCAdm::TSC_ADM_PRC_ACTIVE オンライン稼働中 serverMainloop()を発行してから,終了要求を受け付けるまでの状態
TSCAdm::TSC_ADM_PRC_DYING 正常終了処理中 終了要求を受け付けてから,endServer()を発行するまでの状態
TSCAdm::TSC_ADM_PRC_DEAD 終了 initServer()の発行以前,またはendServer()の発行以降の状態

サーバアプリケーションの状態遷移については,マニュアル「TPBroker Object Transaction Monitor ユーザーズガイド」のサーバアプリケーションの状態の検出に関する説明を参照してください。

マルチスレッド環境でのメソッド呼び出し規則

マルチスレッド環境で,TSCAdmクラスのメソッドを呼び出す規則を次に示します。

メソッド 複数のスレッド上からの同時呼び出し
initServer できます。
initClient できます。
serverMainloop できます。
shutdown できます。
endServer できます。
endClient できます。
getTSCClient できます。
getTSCServer できます。
releaseTSCClient できます。
releaseTSCServer できます。
get_status できます。

注※
複数のスレッド上から同時に呼び出すことはできますが,有効となるのは一つの呼び出しだけです。