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サービス識別子の列で示されるサービスを提供できます。
単数のTSCアクセプタ名称なしTSCサービス識別子
複数のTSCアクセプタ名称なしTSCサービス識別子
単数のTSCアクセプタ名称なしTSCサービス識別子,および
単数のTSCアクセプタ名称ありTSCサービス識別子
複数のTSCアクセプタ名称なしTSCサービス識別子,および
複数のTSCアクセプタ名称ありTSCサービス識別子(ただし,TSCサービス識別子中のTSCアクセプタ名称は同じ)
サービスの種類の表現例
"ABC::"
"ABC::abc"
"ABC::"
形式
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クラスの同じインスタンスを内部参照(アクセス)できます。