エンティティごとに一意なIDを生成するためのクラスです。 [詳解]
#include <NetZ/src/Core/DOCore/IDGenerator.h>
公開メンバ関数 | |
virtual qBool | ApproveEmigration (qUnsignedInt32 uiReason) |
複製オブジェクトがマイグレーションを行うかどうかを返します。 [詳解] | |
virtual qBool | ApproveFaultRecovery () |
複製オブジェクトに障害回復機能をつけるかどうかを返します。 [詳解] | |
qBool | GenerateID (ID *uiRetID, qUnsignedInt32 uiTimeout=WAIT_INFINITE_TIMEOUT) |
このIDGeneratorからすべてのステーションを通じて利用可能な一意のIDを生成します。 [詳解] | |
size_t | GetNbLocalIDs () const |
ローカルプールに存在している利用可能なID数を取得します。 [詳解] | |
size_t | GetRequestedRangeSize () const |
デュプリカが複製マスターに対して要求するID範囲を取得します。 [詳解] | |
virtual void | OperationEnd (DOOperation *pOperation) |
複製オブジェクトシステム操作が終了されるたびに呼び出されます。 [詳解] | |
qBool | SetIDRange (ID idFirst, ID idLast) |
このIDGeneratorが生成できるIDの範囲を設定します。 [詳解] | |
void | SetRequestedRangeSize (qUnsignedInt32 uiRangeSize) |
デュプリカが複製マスターに対して要求するID範囲を設定します。 [詳解] | |
virtual void | Trace (qUnsignedInt64 uiTraceFlags=TRACE_ALWAYS) const |
現在のID範囲複製マスターと、このローカルステーションに関する情報をトレースします。 [詳解] | |
静的公開メンバ関数 | |
static qUnsignedInt32 | GetDefaultRequestedRangeSize () |
デュプリカが複製マスターに対して要求するID範囲の、IDGenerator生成時におけるデフォルト値を取得します。 [詳解] | |
static void | SetDefaultRequestedRangeSize (qUnsignedInt32 uiRangeSize) |
デュプリカが複製マスターに対して要求するID範囲の、IDGenerator生成時におけるデフォルト値を設定します。 [詳解] | |
非公開型 | |
typedef RefTemplate< DuplicatedObject > | Ref |
複製オブジェクトへの安全な参照を行うためのtypdef | |
typedef SelectionIteratorTemplate< DuplicatedObject > | SelectionIterator |
複製オブジェクトを列挙するためのイテレータのtypedef | |
非公開メンバ関数 | |
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) |
デュプリカのデータセットの情報をバッファから転送します。 [詳解] | |
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 で指定されるデフォルトのタイムアウト値です。単位はミリ秒です。 [詳解] | |
エンティティごとに一意なIDを生成するためのクラスです。
このクラスは、アプリケーションの中のエンティティごとに一意なIDを生成するために利用されます。 このクラスのインスタンスによってIDが生成され、それは一意であることが保証されますが、 複数のIDGeneratorクラスのインスタンスは同一のIDを生成する可能性があります。
このクラスは、システムが自動的に複製オブジェクトのIDを設定するために使用されます。 しかし、このクラスが複製オブジェクトのIDを生成するために利用されるとき、 このクラスはそれぞれの複製オブジェクトクラスごとに作成される必要があります (それぞれのクラスごとに一意のIDを割り当てる必要があるため)。
すべてのIDGeneratorオブジェクトはグローバルであり、ステーションがセッションに 参加するために発見されることが保証されています。
qBool nn::nex::IDGenerator::GenerateID | ( | ID * | uiRetID, |
qUnsignedInt32 | uiTimeout = WAIT_INFINITE_TIMEOUT |
||
) |
このIDGeneratorからすべてのステーションを通じて利用可能な一意のIDを生成します。
すべてのIDGeneratorオブジェクト(複製マスターもデュプリカも含む)は、それぞれが利用できるIDのローカルプールを持っています。 このプールが空になる前に(おおよそ25のIDが使われたとき)に新しいIDのローカルプールを複製マスターに要求します。
もしも有効なIDがローカルIDプールからすべてなくなってしまったときには、 ステーションは、新しいIDプールを複製マスターに要求する必要があります。 そのときにいくらかの時間(だいたい複製マスターとのラウンドトリップ時間と同等ぐらいの時間)この関数はブロックします。
[out] | uiRetID | 生成に成功したときにID番号を受け取るためのポインタを指定します。 |
[in] | uiTimeout | IDを生成するためのシステムが待つための最大待ち時間をミリ秒単位で指定します(デフォルトはタイムアウトなし)。 |
true 正確にIDが生成できた場合に返ります。
false 生成に失敗した場合、もしくはエラーが発生した場合に返ります。
このIDGeneratorが生成できるIDの範囲を設定します。
idFirstで指定されたIDから、idLastで指定した範囲のIDを このIDGeneratorが生成するようになります。ここで指定した、最後の値に 生成されたIDが到達すると、それ以上のGenerateID 関数呼び出しは失敗します。
この関数は、IDGeneratorの複製マスターがのみが呼び出すことが出来ます。 また、いずれかのステーションがGenerateID 関数を呼ぶ前でなければなりません。
[in] | idFirst | 生成が開始されるIDを指定します。 |
[in] | idLast | 生成が終了されるIDを指定します。 |
true 正確にIDの範囲が設定できた場合に返ります。
false エラーが発生した場合に返ります。 デュプリカに対してこの関数を呼び出した場合には、SYSTEMERROR_OBJDUP_INVALID_ON_DUPLICAがシグナルされます。
void nn::nex::IDGenerator::SetRequestedRangeSize | ( | qUnsignedInt32 | uiRangeSize | ) |
デュプリカが複製マスターに対して要求するID範囲を設定します。
すべてのIDGeneratorオブジェクト(複製マスターもデュプリカも含む)は、それぞれが利用できるIDのローカルプールを持っています。 このプールが空になる前に(おおよそ25のIDが使われたとき)に新しいIDのローカルプールを複製マスターに要求します。 この関数は、そのプールの大きさを設定します。 この関数はIDGeneratorの複製マスターもデュプリカも呼び出すことが出来ます。
もしも有効なIDがローカルIDプールからすべてなくなってしまったときには、 ステーションは、新しいIDプールを複製マスターに要求する必要があります。 そのときにいくらかの時間(だいたい複製マスターとのラウンドトリップ時間と同等ぐらいの時間) ID生成(GenerateID 関数)はブロックされます。 ここに設定するサイズを増やすことによって、この現象が発生する回数を最小化することが出来ます。
[in] | uiRangeSize | ローカルIDプールの範囲を指定します。 IDGeneratorが生成されたときには、SetDefaultRequestedRangeSize で指定された値でID範囲が初期化されます。 もしもSetDefaultRequestedRangeSize が一度も呼び出されていなければ、その値は256となります。 |
size_t nn::nex::IDGenerator::GetRequestedRangeSize | ( | ) | const |
デュプリカが複製マスターに対して要求するID範囲を取得します。
すべてのIDGeneratorオブジェクト(複製マスターもデュプリカも含む)は、それぞれが利用できるIDのローカルプールを持っています。 このプールが空になる前に(おおよそ25のIDが使われたとき)に新しいIDのローカルプールを複製マスターに要求します。 この関数は、そのプールの大きさを取得します。
|
static |
デュプリカが複製マスターに対して要求するID範囲の、IDGenerator生成時におけるデフォルト値を設定します。
すべてのIDGeneratorオブジェクト(複製マスターもデュプリカも含む)は、それぞれが利用できるIDのローカルプールを持っています。 このプールが空になる前に(おおよそ25のIDが使われたとき)に新しいIDのローカルプールを複製マスターに要求します。 この関数は、IDGeneratorが作成されたときに利用される、デフォルトのローカルIDプールサイズを設定します。
[in] | uiRangeSize | デュプリカが複製マスターに対して要求するID範囲の、IDGenerator生成時におけるデフォルト値を指定します。 |
|
static |
デュプリカが複製マスターに対して要求するID範囲の、IDGenerator生成時におけるデフォルト値を取得します。
すべてのIDGeneratorオブジェクト(複製マスターもデュプリカも含む)は、それぞれが利用できるIDのローカルプールを持っています。 このプールが空になる前に(おおよそ25のIDが使われたとき)に新しいIDのローカルプールを複製マスターに要求します。 この関数は、IDGeneratorが作成されたときに利用される、デフォルトのローカルIDプールサイズを取得します。
|
virtual |
複製オブジェクトがマイグレーションを行うかどうかを返します。
マイグレーションとは、複製オブジェクトのコントロール権限が 別のステーションに移行することを指します。 この関数は、正常シーケンスでステーションがセッションから抜けるとき、 その直前にシステム側から呼び出され、 別のステーションにオブジェクトの権限を移行するかどうかを返します。 アプリケーションはこの関数をオーバーライドすることによって挙動を変更することが出来ます。
障害発生時(たとえば電源断などが原因でステーションが急にセッションから消えたときなど)に、 複製オブジェクトが存在し続ける機能を実装する場合は、 この関数ではなく、ApproveFaultRecovery 関数をオーバーライドします。
※この関数はアプリケーション側から呼び出すためではなく、 システム側から呼び出されるために用意されています。
[in] | uiReason | 常にMIGRATION_REASON_LEAVING_SESSIONが指定されます。 |
true 複製オブジェクトのマイグレーションを行います。 セッションに存在していた複製オブジェクトはそのコントロール権限をセッションに残るステーションに移譲します。
false 複製オブジェクトのマイグレーションを行いません。 今までセッションに存在していた複製オブジェクトは破棄されます。
nn::nex::DuplicatedObjectを再実装しています。
|
virtual |
複製オブジェクトに障害回復機能をつけるかどうかを返します。
電源断などの障害発生時に、この仮想関数がシステム側から呼び出され、 複製オブジェクトがセッション中に存在し続けるかどうかを返します。 複製オブジェクトのすべてのインスタンス(複製マスター、およびデュプリカ)にて呼び出されますが、 同一クラスのすべてのインスタンスすべてが同じ値を返す必要があります。
この関数をアプリケーションでオーバーライドすることによって、 複製オブジェクトクラスごとに挙動を変更することが出来ます。 デフォルトでは、このシステムコールバックは常にfalseを返す (マイグレーションが発生しない)ようになっています。
この機能は、電源断など、障害が発生したことに対してのみ有効です。 正常シーケンスでのセッション離脱においても同様に複製オブジェクトを セッションに残し続けるには、AttemptEmigration(DOHandle) をオーバーライドしてください。
※この関数はアプリケーション側から呼び出すためではなく、 システム側から呼び出されるために用意されています。
true マイグレーションを発生させる場合に返ります。
false マイグレーションを発生させない場合に返します。
nn::nex::DuplicatedObjectを再実装しています。
|
virtual |
複製オブジェクトシステム操作が終了されるたびに呼び出されます。
この関数は、複製オブジェクトシステム操作(DOOperation)が終わった後で その複製オブジェクトシステム操作インスタンスへのポインタとともにシステム側から呼び出されます。 Operation::GetType 関数を呼び出すことによって どの種類の操作が行われようとしているかを判定することが出来ます。
※この関数はアプリケーション側から呼び出すためではなく、 システム側から呼び出されるために用意されています。
[in] | pOperation | これから実行される操作オブジェクトへのポインタが渡されます。 |
nn::nex::DuplicatedObjectを再実装しています。
|
virtual |
現在のID範囲複製マスターと、このローカルステーションに関する情報をトレースします。
[in] | uiTraceFlags | どのトレースフラグが立っているときに、内容をトレースするか指定します。 |
nn::nex::DuplicatedObjectを再実装しています。
size_t nn::nex::IDGenerator::GetNbLocalIDs | ( | ) | const |
ローカルプールに存在している利用可能なID数を取得します。
すべてのIDGeneratorオブジェクト(複製マスターもデュプリカも含む)は、それぞれが利用できるIDのローカルプールを持っています。 このプールが空になる前に(おおよそ25のIDが使われたとき)に新しいIDのローカルプールを複製マスターに要求します。 この関数を利用することで、今、どのぐらい利用可能なIDがローカルIDプールに存在する状態なのかを高速に取得することが出来ます。