TSCRootAcceptor(COBOL)

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

TSCRootAcceptorは,サーバオブジェクトの実行空間を表現するオブジェクトです。クライアント側からのTSCユーザオブジェクト呼び出し要求を受け付けて,適切なTSCユーザアクセプタに振り分けます。また,パラレルカウント(常駐するスレッド数)に合わせてスレッドを管理します。

ユーザは,クライアント側にサービスを提供するTSCユーザオブジェクトの実行空間を構築するときに,サーバアプリケーション内でTSCRootAcceptorクラスのインスタンスを生成します。次にTSCRootAcceptorの特徴を示します。

TSCAcceptorの登録

TSCObjectの実行空間の構成

TSCRootAcceptorの実行空間でTSCObjectを実行させる場合,例えば,TSCRootAcceptorの管理するスレッド上でTSCObjectを実行させる場合,そのTSCObjectに対応するTSCAcceptorをTSCRootAcceptorに登録します。TSCRootAcceptorには複数のTSCAcceptorを登録できます。

提供するサービスの管理

TSCRootAcceptorには複数のTSCAcceptorを登録できます。TSCRootAcceptorは,各TSCAcceptorの複数のTSCサービス識別子を集め,かつ,重複を削除したものを属性として管理します。TSCRootAcceptorが提供できるサービスの種類は,このTSCサービス識別子によって表されます。つまり,TSCサービス識別子の列で表されるサービスを提供することになります。

TSCルートアクセプタ状態

TSCルートアクセプタ状態ごとのスレッドの管理方式

TSCルートアクセプタ状態にはactive状態とnon-active状態の2種類があります。各状態の遷移中の場合も含めて,それぞれの状態のときのスレッドの管理方式を次に示します。

active状態での障害通知

サーバアプリケーション内やTSCデーモンとの接続に障害が発生してスレッドが存続できなくなる場合,そのスレッド上でオブジェクト管理終了通知をTSCAcceptorに渡します。その後,そのスレッドを削除します。なお,このときはまだactive状態です。

障害が解除されると,再度,スレッドを生成します。その後,そのスレッド上でオブジェクト管理開始通知をTSCAcceptorに渡します。つまり,障害が発生してから解除されるまでの間は,TSCRootAcceptorは,スレッド数がパラレルカウント(常駐するスレッド数)以下の状態で存続します。

TSCルートアクセプタ登録名称

TSCRootAcceptorがactive状態に遷移すると,TSCRootAcceptorと関連づけられているTSCServerにTSCルートアクセプタ登録名称が登録されます。以降,クライアント側の副プログラム呼び出し要求がTSCRootAcceptorに振り分けられるようになります。

TSCRootAcceptorをactive状態に遷移させるときに,TSCルートアクセプタ登録名称を指定することもできます。activateの呼び出し時に,TSCルートアクセプタ登録名称を指定する場合と指定しない場合について,それぞれ次に示します。

また,同じTSCルートアクセプタ登録名称で,TSCRootAcceptorを同じTSCデーモンに登録できます。同じTSCルートアクセプタ登録名称で登録した場合,スケジュール用キュー(配送機構)が共有されます。ただし,スケジュール用キューを共有する場合,登録するTSCRootAcceptor間で提供できるサービス内容が一致している必要があります。つまり,同じTSCルートアクセプタ登録名称で登録するTSCRootAcceptorは,同じTSCサービス識別子の列を持っている必要があります。

TSCユーザスレッドファクトリによるTSCユーザスレッドの管理

TSCThreadFactoryを引数としてTSCRootAcceptorを生成した場合を前提にします。この場合,TSCRootAcceptorは,non-active状態からactive状態に遷移する過程でスレッドを生成したあと,TSCThreadFactoryのcreateを呼び出して,戻り値であるTSCThreadをそのスレッドに割り当てます。また,active状態からnon-active状態に遷移する過程で,スレッドごとに割り当てたTSCThreadを引数にTSCThreadFactoryのdestroyを呼び出したあと,スレッドを削除します。

COBOLインタフェースでは,プリフィックスがTSCRAcceptorの副プログラムとして提供されます。

形式

* TSCRootAcceptorの生成
CALL 'TSCRAcceptor-create' USING
           BY VALUE       SERVER-PTR
           BY VALUE       THREAD-FACT-PTR
           BY REFERENCE   CORBA-ENVIRONMENT
        RETURNING         R-ACCEPTOR-PTR.

* TSCRootAcceptorの削除
CALL 'TSCRAcceptor-destroy' USING
           BY VALUE       R-ACCEPTOR-PTR
           BY REFERENCE   CORBA-ENVIRONMENT.

* TSCAcceptorの追加
CALL 'TSCRAcceptor-registerAcceptor'   USING
           BY VALUE       R-ACCEPTOR-PTR
           BY VALUE       ACCEPTOR-PTR
           BY REFERENCE   CORBA-ENVIRONMENT.
        RETURNING         ACCEPTOR-ID.

* TSCAcceptorの登録解除
CALL 'TSCRAcceptor-cancelAcceptor'   USING
           BY VALUE       R-ACCEPTOR-PTR
           BY VALUE       ACCEPTOR-ID
           BY REFERENCE   CORBA-ENVIRONMENT.

* パラレルカウントの設定
CALL 'TSCRAcceptor-setParallelCount'   USING
           BY VALUE       R-ACCEPTOR-PTR
           BY VALUE       P-COUNT
           BY REFERENCE   CORBA-ENVIRONMENT.
CALL 'TSCRAcceptor-getParallelCount'   USING
           BY VALUE       R-ACCEPTOR-PTR
           BY REFERENCE   CORBA-ENVIRONMENT
        RETURNING         P-COUNT.

* TSCRootAcceptorの活性化
CALL 'TSCRAcceptor-activate'   USING
           BY VALUE       R-ACCEPTOR-PTR
           BY VALUE       R-ACCEPTOR-NAME
           BY REFERENCE   CORBA-ENVIRONMENT.

* TSCRootAcceptorの非活性化
CALL 'TSCRAcceptor-deactivate' USING
           BY VALUE       R-ACCEPTOR-PTR
           BY VALUE       MODE
           BY REFERENCE   CORBA-ENVIRONMENT.

* スケジュール用キュー長の設定
CALL 'TSCRAcceptor-setQueueLength'   USING
           BY VALUE       R-ACCEPTOR-PTR
           BY VALUE       P-LENGTH
           BY REFERENCE   CORBA-ENVIRONMENT.
CALL 'TSCRAcceptor-getQueueLength'   USING
           BY VALUE       R-ACCEPTOR-PTR
           BY REFERENCE   CORBA-ENVIRONMENT
        RETURNING         P-LENGTH.

副プログラム

●CALL 'TSCRAcceptor-create' USING

           BY VALUE       SERVER-PTR
           BY VALUE       THREAD-FACT-PTR
           BY REFERENCE   CORBA-ENVIRONMENT
        RETURNING         R-ACCEPTOR-PTR.

項目型・(入出力の区別)意味
引数BY VALUE SERVER-PTR USAGE POINTER(入力)接続するTSCデーモン
BY VALUE THREAD-FACT-PTR USAGE-POINTER(入力)TSCCBLThreadFactoryのポインタ
BY REFERENCE CORBA-ENVIRONMENT(出力)例外情報集団項目
戻り値R-ACCEPTOR-PTR USAGE POINTERTSCRootAcceptorのポインタ
例外TSCBadParamException
TSCNoMemoryException

TSCServerから要求を受信するTSCRootAcceptorオブジェクトを生成します。スレッドファクトリを関連づけない場合は,THREAD-FACT-PTRにNULLポインタを設定してください。

引数で渡すTSCServerの解放責任,引数で渡すTSCCBLThreadFactoryの解放責任,および戻り値で返されるTSCRootAcceptorの削除責任はユーザにあるので,適切な状態のときに解放および削除してください。

なお,この副プログラムを複数のスレッドが同時に呼び出すことができます。

●CALL 'TSCRAcceptor-destroy' USING

          BY VALUE       R-ACCEPTOR-PTR
          BY REFERENCE   CORBA-ENVIRONMENT.

項目型・(入出力の区別)意味
引数BY VALUE R-ACCEPTOR-PTR USAGE POINTER(入力)TSCRootAcceptorのポインタ
BY REFERENCE CORBA-ENVIRONMENT(出力)例外情報集団項目
戻り値ありません。
例外ありません。

TSCRootAcceptorオブジェクトを解放します。解放したTSCRootAcceptorのポインタは使用できません。

なお,この副プログラムを複数のスレッドが同時に呼び出すことができます。

●CALL 'TSCRAcceptor-registerAcceptor' USING

           BY VALUE      R-ACCEPTOR-PTR
           BY VALUE      ACCEPTOR-PTR
           BY REFERENCE  CORBA-ENVIRONMENT
        RETURNING        ACCEPTOR-ID.

項目型・(入出力の区別)意味
引数BY VALUE R-ACCEPTOR-PTR USAGE POINTER(入力)TSCRootAcceptorのポインタ
BY VALUE ACCEPTOR-PTR USAGE POINTER(入力)登録するTSCAcceptorのポインタ
BY REFERENCE CORBA-ENVIRONMENT(出力)例外情報集団項目
戻り値ACCEPTOR-ID PIC S9(9) COMP登録したTSCAcceptorの登録識別子
例外TSCBadParamException
TSCNoMemoryException
TSCNoPermissionException

TSCAcceptorを登録します。activate状態のときは登録できません。

登録するTSCAcceptorのメモリ領域の管理責任はユーザにあるので,適切な状態のときに削除してください。

なお,この副プログラムを複数のスレッド上で同時に呼び出すことはできません。

●CALL 'TSCRAcceptor-cancelAcceptor' USING

           BY VALUE       R-ACCEPTOR-PTR
           BY VALUE       ACCEPTOR-ID
           BY REFERENCE   CORBA-ENVIRONMENT.

項目型・(入出力の区別)意味
引数BY VALUE R-ACCEPTOR-PTR USAGE POINTER(入力)TSCRootAcceptorのポインタ
BY VALUE ACCEPTOR-ID PIC S9(9) COMP(入力)削除するTSCAcceptorの識別子
BY REFERENCE CORBA-ENVIRONMENT(出力)例外情報集団項目
戻り値ありません。
例外TSCBadParamException
TSCNoPermissionException

TSCAcceptorオブジェクトを削除します。activate状態のときは削除できません。

なお,この副プログラムを複数のスレッド上で同時に呼び出すことはできません。

●CALL 'TSCRAcceptor-setParallelCount' USING

           BY VALUE         R-ACCEPTOR-PTR
           BY VALUE         P-COUNT
           BY REFERENCE     CORBA-ENVIRONMENT.

項目型・(入出力の区別)意味
引数BY VALUE R-ACCEPTOR-PTR USAGE POINTER(入力)TSCRootAcceptorのポインタ
BY VALUE P-COUNT PIC S9(9) COMP(入力)パラレルカウント
BY REFERENCE CORBA-ENVIRONMENT(出力)例外情報集団項目
戻り値ありません。
例外TSCBadParamException
TSCNoPermissionException

パラレルカウント(常駐するスレッド数)を設定します。パラレルカウントのデフォルト値は"1"です。また,TSCAdm-initServer発行時の引数ARGVに-TSCParallelCountオプションを指定した場合は,パラレルカウントのデフォルト値はその指定値となります。

なお,この副プログラムを複数のスレッド上で同時に呼び出すことはできません。

●CALL 'TSCRAcceptor-getParallelCount' USING

           BY VALUE       R-ACCEPTOR-PTR
           BY REFERENCE   CORBA-ENVIRONMENT
        RETURNING        P-COUNT.

項目型・(入出力の区別)意味
引数BY VALUE R-ACCEPTOR-PTR USAGE POINTER(入力)TSCRootAcceptorのポインタ
BY REFERENCE CORBA-ENVIRONMENT(出力)例外情報集団項目
戻り値P-COUNT PIC S9(9) COMPパラレルカウント
例外TSCBadParamException

パラレルカウント(常駐するスレッド数)を取得します。

この副プログラムを複数のスレッド上で同時に呼び出すことができます。

●CALL 'TSCRAcceptor-activate' USING

           BY VALUE      R-ACCEPTOR-PTR
           BY VALUE      R-ACCEPTOR-NAME
           BY REFERENCE  CORBA-ENVIRONMENT.

項目型・(入出力の区別)意味
引数BY VALUE R-ACCEPTOR-PTR USAGE POINTER(入力)TSCRootAcceptorのポインタ
BY VALUE R-ACCEPTOR-NAME USAGE POINTER(入力)TSCルートアクセプタ登録名称
BY REFERENCE CORBA-ENVIRONMENT(出力)例外情報集団項目
戻り値ありません。
例外TSCBadInvOrderException
TSCBadParamException
TSCCommFailureException
TSCInternalException
TSCNoMemoryException
TSCNoPermissionException
TSCNoResourcesException

指定したTSCルートアクセプタ登録名称で,active状態に遷移します。ただし,このバージョンでは,TSCルートアクセプタ識別子の指定は無視され,常にデフォルト値が適用されます。

TSCルートアクセプタ登録名称にNULLを指定すると,デフォルトのTSCルートアクセプタ登録名称が使用されます。デフォルトのTSCルートアクセプタ登録名称は"default"です。また,TSCAdm-initServer発行時の引数ARGVに--TSCRootAcceptorNameオプションを指定した場合は,TSCルートアクセプタ登録名称のデフォルト値はその指定値となります。

なお,この副プログラムを複数のスレッド上で同時に呼び出すことはできません。

●CALL 'TSCRAcceptor-deactivate' USING

           BY VALUE      R-ACCEPTOR-PTR
           BY VALUE      MODE
           BY REFERENCE  CORBA-ENVIRONMENT.

項目型・(入出力の区別)意味
引数BY VALUE R-ACCEPTOR-PTR USAGE POINTER(入力)TSCRootAcceptorのポインタ
BY VALUE MODE PIC S9(9) COMP(入力)非活性化モード
BY REFERENCE CORBA-ENVIRONMENT(出力)例外情報集団項目
戻り値ありません。
例外TSCBadInvOrderException
TSCBadParamException
TSCCommFailureException
TSCInternalException
TSCNoMemoryException

non-active状態に遷移します。ただし,このバージョンでは非活性化モードは無視されます。

この副プログラムを複数のスレッド上で同時に呼び出すことはできません。

●CALL 'TSCRAcceptor-setQueueLength' USING

           BY VALUE       R-ACCEPTOR-PTR
           BY VALUE       P-LENGTH
           BY REFERENCE   CORBA-ENVIRONMENT.

項目型・(入出力の区別)意味
引数BY VALUE R-ACCEPTOR-PTR USAGE POINTER(入力)TSCRootAcceptorのポインタ
BY VALUE P-LENGTH PIC S9(9) COMP(入力)スケジュール用キューの長さ
BY REFERENCE CORBA-ENVIRONMENT(出力)例外情報集団項目
戻り値ありません。
例外TSCBadParamException
TSCNoPermissionException

生成するスケジュール用キューの長さを指定します。指定できる範囲は1~32767です。active状態のときは指定できません。

この副プログラムでスケジュール用キューの長さを指定しない場合,生成されるスケジュール用キューの長さは,tscstartprcコマンドまたはサーバアプリケーションの開始コマンドの-TSCQueueLengthオプションで指定した長さになります。スケジュール用キューを共有する場合,すでに生成されているスケジュール用キューの長さが有効になります。

なお,この副プログラムを複数のスレッド上から同時に呼び出すことはできません。

●CALL 'TSCRAcceptor-getQueueLength' USING

           BY VALUE       R-ACCEPTOR-PTR
           BY REFERENCE   CORBA-ENVIRONMENT
        RETURNING        P-LENGTH.

項目型・(入出力の区別)意味
引数BY VALUE R-ACCEPTOR-PTR USAGE POINTER(入力)TSCRootAcceptorのポインタ
BY REFERENCE CORBA-ENVIRONMENT(出力)例外情報集団項目
戻り値P-LENGTH PIC S9(9) COMPスケジュール用キューの長さ
例外TSCBadParamException

non-active状態の場合は,TSCRAcceptor-setQueueLength,またはtscstartprcコマンドもしくはサーバアプリケーションの開始コマンドの-TSCQueueLengthオプションで指定したスケジュール用キューの長さを取得します。TSCRAcceptor-setQueueLengthが未発行で,かつtscstartprcコマンドまたはサーバアプリケーションの開始コマンドの-TSCQueueLengthオプションが指定されていないときの戻り値は"0"となります。

active状態の場合は,現在有効になっているスケジュール用キューの長さを取得します。

なお,この副プログラムを複数のスレッド上から同時に呼び出すことができます。

TSCRootAcceptorの生成と削除

TSCServerを引数に指定したTSCRAcceptor-createで生成し,TSCRootAcceptorを引数に指定したTSCRAcceptor-destroyで削除します。TSCRootAcceptorクラスのインスタンスへの内部参照(アクセス)があるときは削除ないため,インスタンスへの内部参照(アクセス)をなくした状態で削除してください。

マルチスレッド環境での副プログラム呼び出し規則

マルチスレッド環境で,TSCRootAcceptorクラスのインスタンスの副プログラムを呼び出す規則を次に示します。

副プログラム複数のスレッド上からの同時呼び出し
TSCRAcceptor-create
TSCRAcceptor-destroy
TSCRAcceptor-registerAcceptor×
TSCRAcceptor-cancelAcceptor×
TSCRAcceptor-setParallelCount×
TSCRAcceptor-getParallelCount
TSCRAcceptor-activate×
TSCRAcceptor-deactivate×
TSCRAcceptor-setQueueLength×
TSCRAcceptor-getQueueLength
(凡例)
○:できます。
×:できません。

インスタンスの内部参照(アクセス)規則

TSCRootAcceptorクラスのインスタンスがほかのクラスのインスタンスを内部参照(アクセス)する規則を次に示します。

副プログラム内部参照
TSCRAcceptor-registerAcceptorありません。
TSCRAcceptor-cancelAcceptorありません。
TSCRAcceptor-setParallelCountありません。
TSCRAcceptor-getParallelCountありません。
TSCRAcceptor-activate()生成時に指定されたTSCServer型のインスタンス
TSCRAcceptor-deactivate()生成時に指定されたTSCServer型のインスタンス
TSCRAcceptor-setQueueLengthありません。
TSCRAcceptor-getQueueLengthありません。
active状態のときTSCRAcceptor-registerAcceptorの引数で指定したTSCAcceptor型のインスタンス
(TSCRootAcceptorに登録されているTSCAcceptor型のインスタンス)

なお,TSCRootAcceptorクラスのインスタンスを解放したあと,このインスタンスを内部参照するインスタンスからのアクセスは,メモリアクセス違反となります。OTMはこのときの動作を保証しません。また,複数のスレッド上から同時にTSCRootAcceptorクラスの同じインスタンスを内部参照できます。