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

セッションの同期された時刻を提供するクラスです。 [詳解]

#include <NetZ/src/Core/SessionClock/SessionClock.h>

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

公開メンバ関数

 SessionClock ()
 このコンストラクタは呼び出さないでください。 [詳解]
 
virtual ~SessionClock ()
 このデストラクタは呼び出さないでください。 [詳解]
 
virtual void OperationEnd (DOOperation *pOperation)
 複製オブジェクトシステム操作が終了されるたびに呼び出されます。 [詳解]
 

静的公開メンバ関数

static size_t GetDefaultMedianSize ()
 セッションクロック同期計測結果の中央値計算にどのくらい過去の値を使うかを取得します。 [詳解]
 
static Time GetTime ()
 セッションクロックを取得します。 [詳解]
 
static void SetDefaultMedianSize (size_t s)
 セッションクロック同期計測結果の中央値計算にどのくらい過去の値を使うか設定します。 [詳解]
 
static qBool SetTime (Time tNow)
 現在のセッションクロック値を設定します。 [詳解]
 

静的公開変数類

static const TimeInterval s_tiDefaultSyncPulseDelay
 同期パルス送信間隔のデフォルト値(2000msec)です。
 
static const size_t s_uiDefaultMinimumNbSyncPulse
 初期同期パルス回数のデフォルト値(5)です。
 

非公開型

typedef RefTemplate< DuplicatedObjectRef
 複製オブジェクトへの安全な参照を行うためのtypdef
 
typedef SelectionIteratorTemplate< DuplicatedObjectSelectionIterator
 複製オブジェクトを列挙するためのイテレータのtypedef
 

非公開メンバ関数

virtual qBool ApproveEmigration (qUnsignedInt32 uiReason)
 複製オブジェクトがマイグレーションを行うかどうかを返します。 [詳解]
 
virtual qBool ApproveFaultRecovery ()
 複製オブジェクトに障害回復機能をつけるかどうかを返します。 [詳解]
 
qBool AttemptEmigration (DOHandle hNewLocation)
 この複製オブジェクトを指定されたステーションに対してエミグレーションさせます。 [詳解]
 
virtual qReal ComputeDistance (DuplicatedObject *pOtherObject)
 推測航法において、距離ベースの推定エラーを計算する際の距離計算を行います。 [詳解]
 
qBool CreateDuplica (DOHandle hNewDuplicaStation)
 この複製オブジェクトのデュプリカを作成します。 [詳解]
 
qBool DeleteMainRef ()
 複製オブジェクトの主参照を削除するように指示します。 [詳解]
 
qBool Emigrate (MigrationContext *pContext, DOHandle hTargetStation)
 この複製オブジェクトを指定されたステーションに対してエミグレーションさせます。 [詳解]
 
const qCharGetClassNameString () const
 複製オブジェクトのクラス名を文字列として取得します。 [詳解]
 
const qCharGetDatasetNameString (qByte byDatasetIndex) const
 この複製オブジェクトに関連付けられているデータセットの名称を取得します。 [詳解]
 
DOClassID GetDOClassID () const
 この複製オブジェクトの複製オブジェクトクラスIDを取得します。 [詳解]
 
DOHandle GetHandle () const
 この複製オブジェクトの複製オブジェクトハンドルを取得します。 [詳解]
 
qUnsignedInt32 GetHandleValue () const
 この複製オブジェクトのインスタンスを表すqUnsignedInt32 型の値を取得します。 [詳解]
 
StationID GetMasterID () const
 この複製オブジェクトのマスターのステーションのStationIDを取得します。 [詳解]
 
DOHandle GetMasterStation () const
 この複製オブジェクトの複製マスターとなっているStation オブジェクトの複製オブジェクトハンドルを取得します。 [詳解]
 
qBool HasAuthority () const
 この複製オブジェクトが権限を持っているかどうかを取得します。 [詳解]
 
virtual void InitDO ()
 複製オブジェクトが初期化されたときにシステム側から呼び出されます。 [詳解]
 
qBool IsA (DOClassID idDOCID) const
 この複製オブジェクトインスタンスが指定された複製オブジェクトクラスのインスタンスであるかを調べます。 [詳解]
 
virtual qBool IsACoreDO () const
 この複製オブジェクトがCoreDOであるかどうかを取得します。 [詳解]
 
qBool IsADuplica () const
 この複製オブジェクトがデュプリカであるか、そうでないかを取得します。 [詳解]
 
qBool IsADuplicationMaster () const
 この複製オブジェクトが複製マスターであるか、そうでないかを取得します。 [詳解]
 
qBool IsAKindOf (DOClassID idDOCID) const
 この複製オブジェクトインスタンスが指定された複製オブジェクトクラス、またはその派生関係であるかどうかを調べます。 [詳解]
 
qBool IsAUserDO () const
 この複製オブジェクトがUserDOであるかどうかを取得します。 [詳解]
 
qBool IsAWellKnownDO () const
 この複製オブジェクトが既知オブジェクトクラスのインスタンスであるかどうかを取得します。 [詳解]
 
qBool IsGlobal () const
 このインスタンスがグローバル複製オブジェクトであるかどうかを取得します。 [詳解]
 
qBool IsPublished () const
 この関数が発行されたかどうかを取得します。 [詳解]
 
qBool MainRefIsDeleted () const
 DeleteMainRef 関数がこのオブジェクトに対して呼び出されたかどうかを取得します。 [詳解]
 
qBool MigrationInProgress () const
 この複製オブジェクトがマイグレーションを行っている最中かどうかを取得します。 [詳解]
 
virtual void OperationBegin (DOOperation *pOperation)
 複製オブジェクトシステム操作が開始されるたびに呼び出されます。 [詳解]
 
qBool Publish (qUnsignedInt32 uiTimeout=DEFAULT_PUBLISH_TIMEOUT)
 この複製オブジェクトのインスタンスをセッションにいるステーションに発行します。 [詳解]
 
qBool Refresh ()
 デュプリカのデータセットの情報をバッファから転送します。 [詳解]
 
qBool Refresh (const Time &tRefreshTime)
 デュプリカのデータセットの情報をバッファから転送します。 [詳解]
 
qBool Refresh (DataSet &refDataset)
 デュプリカのデータセットの情報をバッファから転送します。 [詳解]
 
qBool Refresh (DataSet &refDataset, const Time &tRefreshTime)
 デュプリカのデータセットの情報をバッファから転送します。 [詳解]
 
virtual void Trace (qUnsignedInt64 uiTraceFlag=TRACE_ALWAYS) const
 この複製オブジェクトの状態をトレースします(デバッグ用)。 [詳解]
 
qResult Update ()
 すべてのデータセットの内容が更新されたことをセッションに存在するデュプリカに通知します。 [詳解]
 
qResult Update (const Time &tUpdateTime)
 すべてのデータセットの内容が更新されたことをセッションに存在するデュプリカに通知します。 [詳解]
 
qResult Update (DataSet &refDataset)
 指定されたデータセットの内容が更新されたことをセッションに存在するデュプリカに通知します。 [詳解]
 
qResult Update (DataSet &refDataset, const Time &tUpdateTime)
 指定されたデータセットの内容が更新されたことをセッションに存在するデュプリカに通知します。 [詳解]
 

静的非公開メンバ関数

static DuplicatedObjectCreate (qUnsignedInt32 uiTimeout==DEFAULT_CREATE_TIMEOUT)
 複製オブジェクトのローカルインスタンスを作成します。 [詳解]
 
static DuplicatedObjectCreate (DOID idUserDefinedID)
 複製オブジェクトのローカルインスタンスを作成します。 [詳解]
 
static DuplicatedObjectCreate (DOClassID idDOClass, qUnsignedInt32 uiTimeout=WAIT_INFINITE_TIMEOUT)
 複製オブジェクトのローカルインスタンスを作成します。 [詳解]
 
static DuplicatedObjectCreate (DOClassID idDOClass, DOID idUserDefinedID)
 複製オブジェクトのローカルインスタンスを作成します。 [詳解]
 
static DuplicatedObjectCreate (const DOHandle &dohHandle)
 複製オブジェクトのローカルインスタンスを作成します。 [詳解]
 
static DuplicatedObjectCreateWellKnown (WKHandle &hWK)
 指定された既知オブジェクトを作成します。 [詳解]
 
static DuplicatedObjectDynamicCast (DuplicatedObject *pDO)
 複製オブジェクトへのポインタの動的キャストを行います。 [詳解]
 
static qBool FetchDuplica (FetchContext *pContext, DOHandle hFetchedObject)
 複製オブジェクトのデュプリカを取ってきます。 [詳解]
 
static DOOperationGetCurrentOperation ()
 現在実行している最中の、複製オブジェクトに対する操作オブジェクトへのポインタを取得します。 [詳解]
 
static OperationManagerGetOperationManager ()
 OperationManager へのポインタを取得します。 [詳解]
 

静的非公開変数類

static const qUnsignedInt32 DEFAULT_CREATE_TIMEOUT = 1000
 DuplicatedObject::Create で指定されるデフォルトのタイムアウト値です。単位はミリ秒です。 [詳解]
 
static const qUnsignedInt32 DEFAULT_PUBLISH_TIMEOUT = 1000
 DuplicatedObject::Publish で指定されるデフォルトのタイムアウト値です。単位はミリ秒です。 [詳解]
 

詳解

セッションの同期された時刻を提供するクラスです。

SessionClockクラスによって提供される時刻(セッションクロック)は、セッションに参加しているすべての 参加者の間で同期されます。セッションクロックは、セッションマスターが Session::CreateSession 関数を呼び出したタイミングに自動的に0で初期化されます。 セッションマスターはSetTime 関数を呼び出すことによってこのクラスが提供する時刻を 変更することが出来ます。

セッションクロックは異なった参加者同士でイベントの同期や比較を行うために利用できます。 単一マシン上での時刻取得はSystemClock またはChronoを利用してください。 同期がうまくとれていないセッションクロックは、Net-Zのいくつかのシステム(特に、推測航法)に 悪影響を及ぼします。

セッションクロックの誤差はレイテンシ(メッセージが相手に届くまでのラグ)と、 ジッタ(レイテンシのばらつき)です。時刻同期を行うためのアルゴリズムは、 二つの参加者間のレイテンシが対称的であることを仮定します。したがって、 対称的でないレイテンシをもつ二つの参加者間でセッションクロックは誤差を生じます。 非対称的なレイテンシは、参加者がそれ以外の追加タスク(たとえば、ファイルをロードするなど)を 実行して同期パルスが遅延することで発生することがあります。

セッションクロックについての詳細はNEXプログラミングマニュアルも参照してください。

参照
SystemClock, Chrono, Time

構築子と解体子

nn::nex::SessionClock::SessionClock ( )

このコンストラクタは呼び出さないでください。

SessionClockオブジェクトはセッションが作成され、 0ミリ秒として初期化されるときにシステムによって自動的に作成されます。

virtual nn::nex::SessionClock::~SessionClock ( )
virtual

このデストラクタは呼び出さないでください。

SessionClockオブジェクトはシステムによってセッション終了時に自動的に破棄されます。

関数詳解

static Time nn::nex::SessionClock::GetTime ( )
static

セッションクロックを取得します。

この関数を呼び出すと、自分自身が保持しているSessionClockオブジェクトから、 セッションクロック情報を取得することが出来ます。 この、SessionClockオブジェクトは、セッションマスターのSessionClockオブジェクトと 同期されています。セッションに参加しているすべての参加者はこの関数を呼び出すことが可能です。

戻り値
現在のセッションクロック値がミリ秒単位で返ります。
static qBool nn::nex::SessionClock::SetTime ( Time  tNow)
static

現在のセッションクロック値を設定します。

セッションマスターのみが現在のセッションクロック値を設定することが出来ます。 セッションマスターであるかどうかは、Session::GetInstance で取得した セッションオブジェクトインスタンスのポインタに対して DuplicatedObject::IsADuplicationMaster 関数を呼び出すことで調べることが出来ます。

引数
[in]tNow設定するセッションクロック値をミリ秒単位で指定します。
戻り値一覧:

true 正常に設定できた場合に返ります。

false 設定に失敗した場合に返ります。 セッションマスター以外がこの関数を呼び出したときは SYSTEMERROR_DC_NOT_CLUSTER_MASTERエラーがシグナルされます。

static void nn::nex::SessionClock::SetDefaultMedianSize ( size_t  s)
static

セッションクロック同期計測結果の中央値計算にどのくらい過去の値を使うか設定します。

引数
[in]s計算に用いる過去の値数を設定します。
static size_t nn::nex::SessionClock::GetDefaultMedianSize ( )
static

セッションクロック同期計測結果の中央値計算にどのくらい過去の値を使うかを取得します。

戻り値
計算に用いる過去の値数を取得します。
virtual void nn::nex::SessionClock::OperationEnd ( DOOperation pOperation)
virtual

複製オブジェクトシステム操作が終了されるたびに呼び出されます。

この関数は、複製オブジェクトシステム操作(DOOperation)が終わった後で その複製オブジェクトシステム操作インスタンスへのポインタとともにシステム側から呼び出されます。 Operation::GetType 関数を呼び出すことによって どの種類の操作が行われようとしているかを判定することが出来ます。

※この関数はアプリケーション側から呼び出すためではなく、 システム側から呼び出されるために用意されています。

引数
[in]pOperationこれから実行される操作オブジェクトへのポインタが渡されます。
参照
OperationEnd

nn::nex::DuplicatedObjectを再実装しています。