CTR NEX API Reference
nn::nex::DORef クラス

複製オブジェクトの安全な参照(アクセサ)を作成します。 [詳解]

#include <NetZ/src/Core/DOCore/DORef.h>

+ nn::nex::DORef の継承関係図

公開メンバ関数

 DORef ()
 無効な参照として初期化します。
 
 DORef (DOHandle hDO)
 複製オブジェクトハンドルを利用して初期化します。 [詳解]
 
 DORef (const DORef &oRef)
 コピーコンストラクタです。 [詳解]
 
 DORef (DuplicatedObject *pDO)
 複製オブジェクトへのポインタを指定して初期化します。 [詳解]
 
DuplicatedObjectGetDOPtr () const
 この参照が示す複製オブジェクトのポインタを取得します。 [詳解]
 
DOHandle GetHandle () const
 この参照が示す複製オブジェクトのハンドルを取得します。 [詳解]
 
qBool IsHard () const
 このDORefが、複製オブジェクトへの「強い」参照であるかどうかを返します。 [詳解]
 
qBool IsSoft () const
 このDORefが、複製オブジェクトへの「弱い」参照であるかどうかを返します。 [詳解]
 
qBool IsValid () const
 DORefのインスタンスが有効であるかどうかを取得します。 [詳解]
 
qBool Poll ()
 DORefの参照が有効かどうかを試行します。
. [詳解]
 
void SetHard ()
 DORefを「強い」参照に設定します。 [詳解]
 
void SetSoft ()
 DORefを「弱い」参照に設定します。 [詳解]
 
qBool Wait (qUnsignedInt32 uiTimeout=WAIT_INFINITE_TIMEOUT)
 DORefが有効になるか、タイムアウトが経過するまで待ちます。 [詳解]
 

詳解

複製オブジェクトの安全な参照(アクセサ)を作成します。

複製オブジェクトへの参照は、RefTemplate によって詳細な実装が行われます。 RefTemplate は薄いテンプレートクラスの構造になっており、 共通部分はこのDORefによって実装されます。

構築子と解体子

nn::nex::DORef::DORef ( DOHandle  hDO)

複製オブジェクトハンドルを利用して初期化します。

複製オブジェクトハンドル(DOHandle)は、セッション中に存在する複製オブジェクトを 一意に表すことが出来るハンドルです。このコンストラクタでは複製オブジェクトハンドルから 複製オブジェクトへの安全な参照を作成します。

正しく複製オブジェクトのハンドルの参照が構築できた場合、 IsValid() がtrueを返します。

引数
[in]hDO参照対象の複製オブジェクトのハンドルを指定します。
nn::nex::DORef::DORef ( const DORef oRef)

コピーコンストラクタです。

指定した参照の指す複製オブジェクトを参照して初期化します。

正しく複製オブジェクトのハンドルの参照が構築できた場合、 IsValid() がtrueを返します。

引数
[in]oRef参照のコピー元を指定します。
nn::nex::DORef::DORef ( DuplicatedObject pDO)

複製オブジェクトへのポインタを指定して初期化します。

指定された複製オブジェクトへのポインタを参照するように初期化します。

正しく複製オブジェクトのハンドルの参照が構築できた場合、 IsValid() がtrueを返します。

引数
[in]pDO参照先の複製オブジェクトへのポインタを指定します。

関数詳解

DOHandle nn::nex::DORef::GetHandle ( ) const

この参照が示す複製オブジェクトのハンドルを取得します。

戻り値
この参照が示す複製オブジェクトハンドルが返ります。
qBool nn::nex::DORef::IsSoft ( ) const

このDORefが、複製オブジェクトへの「弱い」参照であるかどうかを返します。

複製オブジェクトへの参照は、「弱い」参照と「強い」参照の2種類があります(デフォルトは「強い」参照)。 参照の強弱についての詳細は、 SetSoft をご覧下さい。

参照
IsHard, SetSoft, SetHard
戻り値
「弱い」参照であればtrue。「強い」参照であったり、エラーが発生した場合にはfalse。
qBool nn::nex::DORef::IsHard ( ) const

このDORefが、複製オブジェクトへの「強い」参照であるかどうかを返します。

複製オブジェクトへの参照は、「弱い」参照と「強い」参照の2種類があります(デフォルトは「強い」参照)。 参照の強弱についての詳細は、 SetSoft をご覧下さい。

参照
IsSoft, SetSoft, SetHard
戻り値
「強い」参照であればtrue。「弱い」参照であったり、エラーが発生した場合にはfalse。
void nn::nex::DORef::SetSoft ( )

DORefを「弱い」参照に設定します。

複製オブジェクトへの参照は、「弱い」参照と「強い」参照の2種類があります(デフォルトは「強い」参照)。 この参照は、実行時に強い参照から弱い参照に変更することもできますし、その逆もまた可能です。 強い参照は、オブジェクトが常に関連していることを保証し、DuplicatedObject::DeleteMainRefが 呼び出されない限り、ローカルステーションにて最新の状態を保ち続けます。 この参照の使い分けは、現時点ではローカルステーションに関連性の無かったオブジェクトを取ってくる際 (DuplicatedObject::FetchDuplica)によく使われます。 対照的に、弱い参照はオブジェクトの関連性に影響を及ぼさないので、デュプリカは複製スペース機能によって 関連性があると判断されたときにのみ更新されます。 強い参照と弱い参照の選択は、参照されたオブジェクトの状態を最新のものにキープしておきたいかどうかによって 決まります。

例を挙げます。仮想世界において、プレイヤーとは別世界にいるチームメイトの状態(位置、所持品など)の リストを最新の状態にキープしておきたいならば、それらのオブジェクト(デュプリカ)が常に最新の状態に 更新されるようにするため、強い参照を使うでしょう。 一方、敵キャラクターのようなケースでは、ローカルステーションで無駄に状態の更新はしないでしょうから、 おそらく弱い参照を使うでしょう。 弱い参照を使う場合は、そのオブジェクトはローカルステーションに関連が出てくるようになってから (複製スペースの条件にマッチしたら)更新の対象となります。

参照
IsHard, IsSoft, SetHard
void nn::nex::DORef::SetHard ( )

DORefを「強い」参照に設定します。

複製オブジェクトへの参照は、「弱い」参照と「強い」参照の2種類があります(デフォルトは「強い」参照)。 この参照は、実行時に強い参照から弱い参照に変更することもできますし、その逆もまた可能です。 強い参照は、オブジェクトが常に関連していることを保証し、DuplicatedObject::DeleteMainRefが 呼び出されない限り、ローカルステーションにて最新の状態を保ち続けます。 この参照の使い分けは、現時点ではローカルステーションに関連性の無かったオブジェクトを取ってくる際 (DuplicatedObject::FetchDuplica)によく使われます。 対照的に、弱い参照はオブジェクトの関連性に影響を及ぼさないので、デュプリカは複製スペース機能によって 関連性があると判断されたときにのみ更新されます。 強い参照と弱い参照の選択は、参照されたオブジェクトの状態を最新のものにキープしておきたいかどうかによって 決まります。

例を挙げます。仮想世界において、プレイヤーとは別世界にいるチームメイトの状態(位置、所持品など)の リストを最新の状態にキープしておきたいならば、それらのオブジェクト(デュプリカ)が常に最新の状態に 更新されるようにするため、強い参照を使うでしょう。 一方、敵キャラクターのようなケースでは、ローカルステーションで無駄に状態の更新はしないでしょうから、 おそらく弱い参照を使うでしょう。 弱い参照を使う場合は、そのオブジェクトはローカルステーションに関連が出てくるようになってから (複製スペースの条件にマッチしたら)更新の対象となります。

参照
IsHard, IsSoft, SetSoft
DuplicatedObject* nn::nex::DORef::GetDOPtr ( ) const

この参照が示す複製オブジェクトのポインタを取得します。

戻り値
この参照が示す複製オブジェクトのポインタが返ります。参照がない場合は、NULLが返ります。
qBool nn::nex::DORef::IsValid ( ) const

DORefのインスタンスが有効であるかどうかを取得します。

この関数は、コンストラクタにて無効なオブジェクトに対するDOHandle 、不明なオブジェクトに対する DOHandle 、異なるオブジェクトに対するDOHandle が渡されたときにfalseを返します。 失敗したときに、SYSTEMERROR_OBJDUP_DO_NOT_FOUNDか、SYSTEMERROR_GEN_INVALID_OPERATIONのエラーを シグナルすることがあります。もしもオブジェクトにへのDOHandle を明示して参照を作っていた場合、 SYSTEMERROR_OBJDUP_MISMATCHED_DOCLASSのエラーをシグナルすることもあります。


戻り値一覧:

true 有効であるときに返ります。

false 無効であるかエラーが発生したときに返ります。

qBool nn::nex::DORef::Poll ( )

DORefの参照が有効かどうかを試行します。
.

戻り値一覧:

true DORefが現在有効であれば返ります。

false DORefが現在有効でないか、あるいはエラーが発生したときに返ります。

参照
Wait, Valid
qBool nn::nex::DORef::Wait ( qUnsignedInt32  uiTimeout = WAIT_INFINITE_TIMEOUT)

DORefが有効になるか、タイムアウトが経過するまで待ちます。

引数
[in]uiTimeout待ち続ける最大の時間をミリ秒単位で指定します。 デフォルトでは無限に待つ(タイムアウトを設けない)となります。
戻り値一覧:

true 待った結果、DORefが有効になったときに返ります。

false タイムアウトが経過したときに返ります。