TSCObjectFactory(C++)

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

TSCObjectFactoryは,OTMがTSCユーザオブジェクトの管理を開始するとき,または管理対象から外すときに呼び出されるオブジェクトのインタフェースです。

ユーザはTSCObjectFactoryを継承させて,TSCユーザオブジェクトを生成,または削除するクラスを定義します。また,TSCユーザオブジェクトのファクトリとして,派生クラスのインスタンスを生成します。次にTSCObjectFactoryの特徴を示します。

OTMからの呼び出しによるTSCObjectの管理

OTMは,TSCObjectFactoryのcreateを呼び出すことで,返されるTSCObjectの管理を開始します。逆に,該当するTSCObjectを引数にTSCObjectFactoryのdestroyを呼び出すことで,TSCObjectを管理対象から外します。

形式

class TSCObjectFactory;
typedef TSCObjectFactory* TSCObjectFactory_ptr;

class TSCObjectFactory
{
public:
 TSCObjectFactory();
 virtual ~TSCObjectFactory();

 virtual TSCObject_ptr create() = 0;
 virtual void destroy(TSCObject_ptr tsc_object) = 0;
};

インクルードファイル

#include <tscobject.h>

コンストラクタ

●TSCObjectFactory()

TSCObjectFactoryを生成します。

デストラクタ

●virtual ~TSCObjectFactory()

TSCObjectFactoryを削除します。

コールバックメソッド

●virtual TSCObject_ptr create() = 0

項目型・意味
戻り値管理対象のTSCユーザオブジェクト
例外各種TSCSystemException

TSCObjectを返します。TSCユーザオブジェクトを生成するコードを記述できます。OTMがこのメソッドを呼び出した結果,返されたTSCObjectが管理対象となります。

管理対象とするTSCObjectのメモリ管理責任はOTMにあるので,ユーザは削除しないでください。なお,OTMは,複数のスレッド上から同時にこのメソッドを呼び出すので,ユーザはマルチスレッド環境に対応するリエントラントなコードを記述する必要があります。

また,create呼び出しに失敗した場合は,各種TSCSystemExceptionによって通知する形でコードを記述してください。

●virtual void destroy(TSCObject_ptr tsc_object) = 0

項目型・意味
引数TSCObject_ptr tsc_object管理対象から外すTSCユーザオブジェクト
例外ありません。

TSCObjectを消去する前の処理のコードを記述できます。OTMがTSCユーザオブジェクトを管理対象から外すとき,該当するTSCObjectを引数に指定して,このメソッドを呼び出します。

管理対象から外されたTSCObjectのメモリ管理責任はユーザにあります。なお,OTMは,複数のスレッド上から同時にこのメソッドを呼び出すので,ユーザはマルチスレッド環境に対応するリエントラントなコードを記述する必要があります。

なお,コネクション切断などの障害時には,ユーザオブジェクトを生成したスレッドとは別のスレッドでdestroy()を発行することがあります。

また,このメソッドから通知した例外は無視されます。

TSCObjectFactoryの派生クラスの生成と削除

TSCObjectFactoryの派生クラスは,newオペレータで生成し,deleteオペレータで削除します。OTMがTSCObjectの公開メソッドを呼び出しているとき,またはユーザがTSCObjectの公開メソッドを呼び出しているときは削除できないため,公開メソッドを呼び出していない状態で削除してください。

マルチスレッド環境でのメソッド呼び出し規則

マルチスレッド環境で,TSCObjectFactoryクラスのインスタンスのメソッドを呼び出す規則を次に示します。なお,これらのメソッドは,OTMが呼び出します。

メソッド複数のスレッド上からの同時呼び出し
createできます。
destroyできます。