削除済み項目の検出
Metadata Storage Service は、項目の削除を追跡しないレプリカを表すプロバイダーを支援する削除検出サービスを提供します。このサービスは、レプリカから削除された項目を検出して、メタデータ ストア内で削除済みとしてマークできるようにします。
削除検出のアルゴリズム
削除検出では、削除された項目を検出するための以下の上位レベル アルゴリズムを使用します。
アクティブと報告される項目をすべて記録します。項目は、そのメタデータが変更されて保存されたとき、またはプロバイダーが明示的に項目をアクティブと報告したときにアクティブと報告されます。
アクティブでないメタデータ エントリは削除済みと報告されます。
プロバイダーは、非アクティブなメタデータ エントリを列挙し、これらを削除済みとしてマークします。
マネージ コードを使用した削除の検出
削除検出には、ReplicaMetadata オブジェクトの DeleteDetector プロパティを介してアクセスできます。
新しい検出パス用に削除検出をリセットするには、MarkAllItemsUnreported を呼び出します。
SaveItemMetadata を使用して項目が変更および保存されたとき、その項目に対するアクティブなメタデータ エントリが暗黙的に存在します。項目は、ReportLiveItemById を呼び出すことによって、変更が加えられていない場合でも明示的にアクティブに保持することができます。
FindUnreportedItems を呼び出すことによって現在削除済みとして検出された項目の一覧を取得します。この一覧に含まれる項目は、MarkAsDeleted を使用してメタデータ ストア内で削除済みとしてマークする必要があります。
アンマネージ コードを使用した削除の検出
削除検出は IReplicaMetadata オブジェクトの一部です。
新しい検出パス用に削除検出をリセットするには、IReplicaMetadata::ResetReportingWatermark を呼び出します。
IReplicaMetadata::SaveItemMetadata を使用して項目が変更および保存されたとき、その項目に対するアクティブなメタデータ エントリが暗黙的に存在します。項目は、IReplicaMetadata::ReportLiveItemByGlobalId を呼び出すことによって、変更が加えられていない場合でも明示的にアクティブに保持することができます。
IReplicaMetadata::GetUnreportedItems を呼び出すことによって現在削除済みとして検出された項目の一覧を取得します。この一覧に含まれる項目は、IItemMetadata::MarkAsDeleted を使用してメタデータ ストア内で削除済みとしてマークする必要があります。
参照
リファレンス
IReplicaMetadata インターフェイス
ReplicaMetadata
DeleteDetector