TSCObject(C++)
TSCObjectはシステム提供クラスです。
TSCObjectは,OTMでの(サーバ)オブジェクトの基本クラスおよびインタフェースです。
ユーザはTSCObjectを継承させて,クライアント側にサービスを提供するクラスを定義します。また,サービスを提供するオブジェクトとして,その派生クラスのインスタンスを生成します。次にTSCObjectの特徴を示します。
TSCObjectが提供するサービスのインタフェース名称
TSCObjectが提供するインタフェースの種類は,TSCAcceptorのインタフェース名称の列で表されます。
TSCObjectが単数のインタフェースを提供する場合,提供するインタフェースの種類は,単数のインタフェース名称で表されます。TSCObjectが複数のインタフェースを提供する場合,例えば,ユーザ定義IDLインタフェースで継承を利用した場合は,複数のインタフェース名称が列で表されます。
TSCObjectの呼び出し時のTSCContextの取得
TSCProxyObjectを使用してクライアント側からTSCObjectのメソッドを呼び出すときに,ユーザは引数以外のデータをTSCContextとして送信できます。クライアント側で引数以外のデータをTSCContextとして送信すると,サーバ側ではTSCObjectのサービス提供メソッドが呼び出されている間に_TSCContextを呼び出すことによって,クライアント側で指定したTSCContextを取得できます。
TSCObjectの呼び出し時のTSCThreadの取得
TSCObjectの呼び出し時のTSCThreadの取得は,TSCThreadFactoryを引数としてTSCRootAcceptorを生成する場合を前提にします。この場合,サーバ側でTSCObjectのサービス提供メソッドが呼び出されている間に_TSCThreadを呼び出すことによって,実行制御を持つスレッドに割り当てられているTSCThreadを取得できます。
TSCObjectの呼び出し時のTSCアクセプタ名称の取得
サーバ側でTSCObjectのサービス提供メソッドが呼び出されている間に_TSCAcceptorNameを呼び出すことによって,サービス提供メソッドの呼び出し元であるTSCAcceptorのTSCアクセプタ名称を取得できます。
形式
class TSCObject;
typedef TSCObject* TSCObject_ptr;
class TSCObject
{
public:
//インタフェース名称
const char* const* _TSCInterfaceName();
//TSCコンテキスト
TSCContext_ptr _TSCContext();
//TSCユーザスレッド
TSCThread_ptr _TSCThread();
//TSCアクセプタ名称
const char* _TSCAcceptorName();
};
インクルードファイル
#include <tscobject.h>
メソッド
●const char* const* _TSCInterfaceName()
項目 | 型・意味 |
---|---|
戻り値 | インタフェース名称列 |
インタフェース名称の列を取得します。
インタフェース名称のメモリ領域の管理責任はTSCObjectクラスにあるので,ユーザは削除しないでください。
なお,このメソッドを複数のスレッド上から同時に呼び出すことはできません。
●TSCContext_ptr _TSCContext()
項目 | 型・意味 |
---|---|
戻り値 | 呼び出し元で指定されたTSCContext |
TSCContextを取得します。クライアント側から呼び出すときにTSCContextに指定したユーザデータを取得できます。
戻り値のTSCContextのメモリ領域の管理責任はTSCObjectクラスにあるので,ユーザは削除しないでください。
なお,このメソッドを複数のスレッド上から同時に呼び出すことはできません。
●TSCThread_ptr _TSCThread()
項目 | 型・意味 |
---|---|
戻り値 | TSCユーザスレッド |
このオブジェクトに割り当てられているスレッドに対応するTSCユーザスレッドを返します。
戻り値のTSCThreadのメモリ領域の管理責任はTSCObjectクラスにあるので,ユーザは削除しないでください。
なお,このメソッドを複数のスレッド上から同時に呼び出すことはできません。
●const char* _TSCAcceptorName()
項目 | 型・意味 |
---|---|
戻り値 | TSCアクセプタ名称 |
TSCObjectを保持しているTSCAcceptorのTSCアクセプタ名称を取得します。
戻り値のTSCアクセプタ名称のメモリ領域の管理責任はTSCAcceptorクラスにあるので,ユーザは削除しないでください。
なお,このメソッドを複数のスレッド上から同時に呼び出すことはできません。
TSCObjectの派生クラスの生成と削除
TSCObjectの派生クラスは,newオペレータで生成し,deleteオペレータで削除します。OTMがTSCObjectの公開メソッドを呼び出しているときは削除できないため,公開メソッドを呼び出していない状態で削除してください。
マルチスレッド環境でのメソッド呼び出し規則
マルチスレッド環境で,TSCObjectクラスのインスタンスのメソッドを呼び出す規則を次に示します。
メソッド | 複数のスレッド上からの同時呼び出し |
---|---|
_TSCInterfaceName | できません。 |
_TSCContext | できません。 |
_TSCThread | できません。 |
_TSCAcceptorName | できません。 |
クライアント側からのオブジェクト呼び出し※ | できません。 |