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

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

TSCAcceptor(COBOL)

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

TSCAcceptorはABC_TSCacptの基底クラスです。各副プログラムはABC_TSCacptのインスタンスに対して発行します。したがって,各副プログラムの第1引数(ACCEPTOR-PTR)には,ユーザ定義IDLインタフェース依存クラス(ABC_TSCacpt)のポインタを指定してください。

TSCAcceptorは,TSCユーザプロキシを使用したクライアント側からのTSCユーザオブジェクトの副プログラム呼び出し要求に対して,サーバ側のTSCユーザオブジェクトの副プログラムを呼び出すためのクラスです。TSCルートアクセプタからTSCユーザオブジェクトの副プログラム呼び出し要求を受け取り,TSCユーザオブジェクトの副プログラムを呼び出します。これに伴って,TSCユーザオブジェクトを管理したり,スレッドとTSCユーザオブジェクト間を対応づけたりします。また,TSCサービス識別子を使用して,TSCユーザオブジェクトが提供するサービスを識別します。

ユーザはTSCユーザオブジェクトの管理オブジェクトとして,TSCAcceptorクラスのインスタンスを生成します。次にTSCAcceptorの特徴を示します。

TSCユーザオブジェクト(TSCObject)の管理

TSCObjectFactoryによるTSCObjectの管理

TSCRootAcceptorがactive状態に遷移するとき,登録されているTSCAcceptorはオブジェクト管理開始通知を受けます。また,TSCRootAcceptorがnon-active状態に遷移するとき,登録されているTSCAcceptorはオブジェクト管理終了通知を受けます。それぞれの通知とともに,TSCAcceptorはTSCObjectFactoryを使用して次に示すように動作します。

TSCRootAcceptorからのTSCObjectの呼び出し

TSCRootAcceptorは,クライアント側からのTSCユーザオブジェクト呼び出しを受け取ると,該当するサービスを提供するTSCAcceptorに振り分けます。さらに,TSCAcceptorは,TSCRootAcceptorが管理するスレッド上でTSCユーザオブジェクト呼び出し要求を受け取ると,同じスレッド上で同じスレッドに割り当てられているTSCObjectを呼び出します。

TSCサービス識別子によるサービスの識別

TSCサービス識別子の構成

TSCAcceptorが提供できるサービスの種類は,TSCサービス識別子によって表されます。TSCサービス識別子は,インタフェース名称の列とTSCアクセプタ名称から構成されます。

サービスの種類の表現方法

TSCAcceptorが提供できるサービスの種類は,TSCサービス識別子の列によって表されます。TSCAcceptorはTSCサービス識別子の列で示されるサービスを提供できます。

サービスの種類の表現例

形式

 
 CALL 'TSCAcceptor-getInterfaceName USING
        BY VALUE      ACCEPTOR-PTR
        BY REFERENCE  CORBA-ENVIRONMENT
      RETURNING       INTERFACE-NAME.
 
 CALL 'TSCAcceptor-getAcceptorName USING
        BY VALUE      ACCEPTOR-PTR
        BY REFERENCE  CORBA-ENVIRONMENT
      RETURNING       ACCEPTOR-NAME.

副プログラム

●CALL 'TSCAcceptor-getInterfaceName' USING

            BY VALUE      ACCEPTOR-PTR
            BY REFERENCE  CORBA-ENVIRONMENT
         RETURNING       INTERFACE-NAME.
 
項目 型・(入出力の区別)意味
引数 BY VALUE ACCEPTOR-PTR USAGE POINTER (入力)ABC_TSCAcptのポインタ
BY REFERENCE CORBA-ENVIRONMENT (出力)例外情報集団項目
戻り値 INTERFACE-NAME USAGE POINTER インタフェース名称
例外 TSCBadParamException
TSCNoPermissionException

インタフェース名称を取得します。

インタフェース名称のメモリ領域の管理責任はTSCAcceptorクラスにあるので,ユーザは解放しないでください。

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

●CALL 'TSCAcceptor-getAcceptorName' USING

            BY VALUE      ACCEPTOR-PTR
            BY REFERENCE  CORBA-ENVIRONMENT
         RETURNING       ACCEPTOR-NAME
 
項目 型・(入出力の区別)意味
引数 BY VALUE ACCEPTOR-PTR USAGE POINTER (入力)ABC_TSCAcptのポインタ
BY REFERENCE CORBA-ENVIRONMENT (出力)例外情報集団項目
戻り値 ACCEPTOR-NAME USAGE POINTER TSCアクセプタ名称
例外 TSCBadParamException

TSCアクセプタ名称を取得します。

TSCアクセプタ名称のメモリ領域の管理責任はTSCAcceptorクラスにあるので,ユーザは解放しないでください。

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

TSCAcceptorの生成と削除

TSCAcceptorは,TSCAcceptor-NEWで生成し,TSCAcceptor-DELETEで削除します。TSCAcceptorクラスのインスタンスへの内部参照(アクセス)があるときは削除できないため,インスタンスへの内部参照(アクセス)をなくした状態で解放してください。

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

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

副プログラム 複数のスレッド上からの同時呼び出し
TSCAcceptor-getInterfaceName できます。
TSCAcceptor-getAcceptorName できます。

インスタンスの公開副プログラム呼び出し規則

TSCAcceptorクラスのインスタンスが,ほかのクラスのインスタンスの公開副プログラムを呼び出す規則を次に示します。

タイミング 公開副プログラム呼び出し
TSCRootAcceptorからのオブジェクト管理開始通知,またはオブジェクト管理終了通知のとき コンストラクタで指定したTSCObjectFactory型のインスタンス
登録先のTSCRootAcceptorがactive状態のとき active状態に遷移するときに管理を開始したTSCObject型のインスタンス

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

TSCAcceptorクラス型のインスタンスを解放したあと,このインスタンスを内部参照するインスタンスからのアクセスは,メモリアクセス違反となります。OTMは,その際の動作を保証しません。

また,複数のスレッド上から同時にTSCAcceptorクラスの同じインスタンスを内部参照(アクセス)できます。