セッションの同期された時刻を提供するクラスです。 [詳解]
#include <NetZ/src/Core/SessionClock/SessionClock.h>
公開メンバ関数 | |
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< DuplicatedObject > | Ref |
複製オブジェクトへの安全な参照を行うためのtypdef | |
typedef SelectionIteratorTemplate< DuplicatedObject > | SelectionIterator |
複製オブジェクトを列挙するためのイテレータの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 qChar * | GetClassNameString () const |
複製オブジェクトのクラス名を文字列として取得します。 [詳解] | |
const qChar * | GetDatasetNameString (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 DuplicatedObject * | Create (qUnsignedInt32 uiTimeout==DEFAULT_CREATE_TIMEOUT) |
複製オブジェクトのローカルインスタンスを作成します。 [詳解] | |
static DuplicatedObject * | Create (DOID idUserDefinedID) |
複製オブジェクトのローカルインスタンスを作成します。 [詳解] | |
static DuplicatedObject * | Create (DOClassID idDOClass, qUnsignedInt32 uiTimeout=WAIT_INFINITE_TIMEOUT) |
複製オブジェクトのローカルインスタンスを作成します。 [詳解] | |
static DuplicatedObject * | Create (DOClassID idDOClass, DOID idUserDefinedID) |
複製オブジェクトのローカルインスタンスを作成します。 [詳解] | |
static DuplicatedObject * | Create (const DOHandle &dohHandle) |
複製オブジェクトのローカルインスタンスを作成します。 [詳解] | |
static DuplicatedObject * | CreateWellKnown (WKHandle &hWK) |
指定された既知オブジェクトを作成します。 [詳解] | |
static DuplicatedObject * | DynamicCast (DuplicatedObject *pDO) |
複製オブジェクトへのポインタの動的キャストを行います。 [詳解] | |
static qBool | FetchDuplica (FetchContext *pContext, DOHandle hFetchedObject) |
複製オブジェクトのデュプリカを取ってきます。 [詳解] | |
static DOOperation * | GetCurrentOperation () |
現在実行している最中の、複製オブジェクトに対する操作オブジェクトへのポインタを取得します。 [詳解] | |
static OperationManager * | GetOperationManager () |
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プログラミングマニュアルも参照してください。
nn::nex::SessionClock::SessionClock | ( | ) |
このコンストラクタは呼び出さないでください。
SessionClockオブジェクトはセッションが作成され、 0ミリ秒として初期化されるときにシステムによって自動的に作成されます。
|
virtual |
このデストラクタは呼び出さないでください。
SessionClockオブジェクトはシステムによってセッション終了時に自動的に破棄されます。
|
static |
セッションクロックを取得します。
この関数を呼び出すと、自分自身が保持しているSessionClockオブジェクトから、 セッションクロック情報を取得することが出来ます。 この、SessionClockオブジェクトは、セッションマスターのSessionClockオブジェクトと 同期されています。セッションに参加しているすべての参加者はこの関数を呼び出すことが可能です。
現在のセッションクロック値を設定します。
セッションマスターのみが現在のセッションクロック値を設定することが出来ます。 セッションマスターであるかどうかは、Session::GetInstance で取得した セッションオブジェクトインスタンスのポインタに対して DuplicatedObject::IsADuplicationMaster 関数を呼び出すことで調べることが出来ます。
[in] | tNow | 設定するセッションクロック値をミリ秒単位で指定します。 |
true 正常に設定できた場合に返ります。
false 設定に失敗した場合に返ります。 セッションマスター以外がこの関数を呼び出したときは SYSTEMERROR_DC_NOT_CLUSTER_MASTERエラーがシグナルされます。
|
static |
セッションクロック同期計測結果の中央値計算にどのくらい過去の値を使うか設定します。
[in] | s | 計算に用いる過去の値数を設定します。 |
|
static |
セッションクロック同期計測結果の中央値計算にどのくらい過去の値を使うかを取得します。
|
virtual |
複製オブジェクトシステム操作が終了されるたびに呼び出されます。
この関数は、複製オブジェクトシステム操作(DOOperation)が終わった後で その複製オブジェクトシステム操作インスタンスへのポインタとともにシステム側から呼び出されます。 Operation::GetType 関数を呼び出すことによって どの種類の操作が行われようとしているかを判定することが出来ます。
※この関数はアプリケーション側から呼び出すためではなく、 システム側から呼び出されるために用意されています。
[in] | pOperation | これから実行される操作オブジェクトへのポインタが渡されます。 |
nn::nex::DuplicatedObjectを再実装しています。