IReplicaMetadata::CleanupDeletedItems
Supprime les éléments marqués comme supprimés et antérieurs à la dernière heure de nettoyage réussi.
HRESULT CleanupDeletedItems(
ULONGLONG ulTimeIntervalInMilliseconds);
Paramètres
- ulTimeIntervalInMilliseconds
[in] Ancienneté minimale des éléments supprimés à conserver dans le magasin des métadonnées. La valeur 0 signifie que tous les éléments supprimés sont nettoyés immédiatement.
Valeur de retour
S_OK
S_FALSE lorsque aucun nettoyage n'est effectué.
E_OUTOFMEMORY
SYNC_E_METADATA_ACTIVE_TRANSACTION_REQUIRED lorsqu'une transaction explicite n'est pas ouverte.
SYNC_E_INVALID_OPERATION lorsqu'une opération non valide a lieu.
Notes
Cette méthode permet à un fournisseur de nettoyer les éléments supprimés selon une planification. L'intervalle de temps spécifié par ulTimeIntervalInMilliseconds correspond à l'ancienneté minimale des éléments supprimés qui sont conservés dans le magasin des métadonnées. Dans la mesure où elle nettoie uniquement les éléments supprimés lorsque le temps ulTimeIntervalInMilliseconds est écoulé, CleanupDeletedItems peut être appelée régulièrement, par exemple chaque fois que le fournisseur effectue une détection de modifications. En conservant toujours les éléments supprimés marqués comme supprimés pendant ulTimeIntervalInMilliseconds, CleanupDeletedItems permet d'épargner au fournisseur des énumérations complètes coûteuses.
La première fois que CleanupDeletedItems est appelée, l'heure actuelle est stockée comme dernière heure de nettoyage réussi et aucune autre action n'est effectuée.
Chaque fois que CleanupDeletedItems est appelée par la suite, elle effectue les étapes ci-après :
Vérifie l'heure actuelle par rapport à la dernière heure de nettoyage réussi. Si le temps écoulé est inférieur à ulTimeIntervalInMilliseconds, aucune action n'est effectuée et S_FALSE est retourné.
Supprime tous les éléments supprimés antérieurs à la dernière heure de nettoyage réussi.
Enregistre l'heure actuelle comme dernière heure de nettoyage réussi.
Met à jour la connaissance oubliée pour refléter les éléments supprimés qui ont été retirés.
Gardez à l'esprit que CleanupDeletedItems nettoie seulement les éléments marqués comme supprimés avant la dernière heure de nettoyage réussi, et non les éléments marqués comme supprimés depuis la dernière heure de nettoyage réussi. Par exemple, CleanupDeletedItems nettoie les éléments avec succès et stocke l'heure actuelle. 24 jours plus tard, CleanupDeletedItems est à nouveau appelée avec la valeur 20 jours spécifiée pour ulTimeIntervalInMilliseconds. CleanupDeletedItems supprime uniquement les éléments supprimés antérieurs à 24 jours, car il s'agit du moment où le dernier nettoyage réussi a été effectué. Un élément marqué comme supprimé entre 24 et 20 jours (par exemple 22 jours) ne sera pas supprimé. Tout élément supprimé qui ne date pas de plus de 20 jours ne sera pas supprimé.
Notes
La spécification de la valeur 0 pour ulTimeIntervalInMilliseconds représente un cas spécial qui entraîne la suppression de tous les éléments supprimés du magasin des métadonnées. Cette opération ne doit être effectuée que lorsqu'un fournisseur est vraiment certain que tous les autres réplicas de la communauté de synchronisation sont synchronisés entre eux, car la suppression trop agressive d'éléments supprimés peut obliger Sync Framework à effectuer une énumération complète.