TSCAcceptor(C++)
TSCAcceptorはシステム提供クラスです。
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に振り分けます。さらに,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::"
形式
class TSCAcceptor;
typedef TSCAcceptor_ptr *TSCAcceptor;
class TSCAcceptor
{
public:
//インタフェース名称列
const char* const* getInterfaceName();
//TSCアクセプタ名称
const char* getAcceptorName();
};
インクルードファイル
#include <tscobject.h>
メソッド
●const char* const* getInterfaceName()
項目 | 型・意味 |
---|---|
戻り値 | インタフェース名称の列 |
例外 | ありません。 |
インタフェース名称の列を取得します。
TSCアクセプタ名称のメモリ領域の管理責任はTSCAcceptorクラスにあるので,ユーザは削除しないでください。
なお,このメソッドを複数のスレッド上から同時に呼び出せます。
●const char* getAcceptorName()
項目 | 型・意味 |
---|---|
戻り値 | TSCアクセプタ名称 |
例外 | ありません。 |
TSCアクセプタ名称を取得します。
TSCアクセプタ名称のメモリ領域の管理責任はTSCAcceptorクラスにあるので,ユーザは削除しないでください。
なお,このメソッドを複数のスレッド上から同時に呼び出せます。
TSCAcceptorの生成と削除
TSCAcceptorを生成するには,引数を指定しないで,またはTSCアクセプタ名称を指定して,newオペレータで生成します。
TSCAcceptorを削除するときは,deleteオペレータを使用します。TSCAcceptorクラスのインスタンスへの内部参照(アクセス)があるときは削除できないため,インスタンスへの内部参照(アクセス)をなくした状態で削除してください。
TSCAcceptorの派生クラス型のインスタンスについても同様です。
マルチスレッド環境でのメソッド呼び出し規則
マルチスレッド環境で,TSCAcceptorクラスのインスタンスのメソッドを呼び出す規則を次に示します。
メソッド | 複数のスレッド上からの同時呼び出し |
---|---|
getInterfaceName | できます。 |
getAcceptorName | できます。 |
インスタンスの公開メソッド呼び出し規則
TSCAcceptorクラスのインスタンスが,ほかのクラスのインスタンスの公開メソッドを呼び出す規則を次に示します。
タイミング | 公開メソッド呼び出し |
---|---|
TSCRootAcceptorからのオブジェクト管理開始通知,またはオブジェクト管理終了通知のとき | コンストラクタで指定したTSCObjectFactory型のインスタンス |
登録先のTSCRootAcceptorがactive状態のとき | active状態に遷移するときに管理を開始したTSCObject型のインスタンス |
インスタンスへの内部参照(アクセス)規則
TSCAcceptorクラス型のインスタンスを解放したあと,このインスタンスを内部参照するインスタンスからのアクセスは,メモリアクセス違反となります。OTMは,その際の動作を保証しません。
また,複数のスレッド上から同時にTSCAcceptorクラスの同じインスタンスを内部参照(アクセス)できます。