ISynchronousNotifyingChangeApplier2::ApplyChanges
Effectue des opérations de détection de conflit, de gestion des conflits, d'application de modifications et de gestion du journal des conflits pour un lot de modifications.
HRESULT ApplyChanges(
CONFLICT_RESOLUTION_POLICY resolutionPolicy,
COLLISION_CONFLICT_RESOLUTION_POLICY collisionPolicy,
ISyncChangeBatch * pSourceChanges,
IUnknown * pUnkDataRetriever,
IEnumSyncChanges * pDestinationVersions,
ISyncKnowledge * pDestinationKnowledge,
IForgottenKnowledge * pDestinationForgottenKnowledge,
ISynchronousNotifyingChangeApplierTarget * pChangeApplierTarget,
IConflictLogAccess * pConflictLogAccess,
ISyncSessionState * pSessionState,
ISyncCallback * pCallback);
Paramètres
- resolutionPolicy
[in] Stratégie à utiliser pour résoudre les conflits d'accès concurrentiels.
- collisionPolicy
[in] Stratégie à utiliser pour résoudre les conflits de contraintes de collision.
- pSourceChanges
[in] Lot de modifications du fournisseur de source.
- pUnkDataRetriever
[in] Objet qui peut être utilisé pour récupérer des données d'élément du réplica source.
- pDestinationVersions
[in] Liste de modifications qui contient les versions des éléments stockés dans le réplica de destination. Ces éléments correspondent aux éléments dans pSourceChanges.
- pDestinationKnowledge
[in] Connaissance du réplica de destination.
- pDestinationForgottenKnowledge
[in] Connaissance oubliée du réplica de destination.
- pChangeApplierTarget
[in] Objet qui sera appelé pour enregistrer les modifications et les conflits.
- pConflictLogAccess
[in] Journal des conflits dans lequel sont stockés les conflits différés et les conflits temporaires.
- pSessionState
[in] Informations d'état relatives à la session active.
- pCallback
[in] Rappels qui recevront des notifications à propos des événements d'application de modifications.
Valeur de retour
S_OK
E_INVALIDARG lorsque resolutionPolicy ou collisionPolicy n'est pas une valeur valide.
E_OUTOFMEMORY
E_POINTER
SYNC_E_BATCH_NEEDS_KNOWLEDGE
SYNC_E_OBJECT_NEEDS_STATE
SYNC_E_CHANGE_COUNT_MISMATCH
SYNC_E_CHANGE_NEEDS_KNOWLEDGE
SYNC_E_ITEM_HAS_NO_CHANGE_UNITS
SYNC_E_ITEM_MUST_EXIST
SYNC_E_CHANGE_NOT_IN_KNOWLEDGE
SYNC_E_CHANGE_UNIT_COUNT_MISMATCH
SYNC_E_KNOWLEDGE_DECREASED
SYNC_E_NOT_EXPECTED_CHANGE
Notes
En général, cette méthode est appelée par un fournisseur à partir de sa méthode IKnowledgeSyncProvider::ProcessChangeBatch.
Cette méthode détecte les conflits d'accès concurrentiel qui se produisent entre les modifications envoyées dans pSourceChanges et les éléments correspondants dans le réplica de destination. Elle résout tous les conflits d'accès concurrentiel conformément à la stratégie spécifiée par resolutionPolicy. Lorsque les conflits de contraintes de collision sont signalés par le fournisseur de destination, cette méthode les résout conformément à la stratégie spécifiée par collisionPolicy. Si aucune stratégie de résolution des conflits n'est définie, cette méthode indique à l'application qu'un conflit s'est produit, et l'application spécifie une action de résolution de conflit. Si nécessaire, cette méthode appelle ensuite des méthodes sur pChangeApplierTarget pour enregistrer les modifications dans le réplica de destination et enregistrer les conflits non résolus.
Si pDestinationVersions est NULL, Sync Framework appelle IASynchronousNotifyingChangeApplierTarget::GetDestinationVersion sur pChangeApplierTarget pour chaque élément dans pSourceChanges.
L'applicateur de modifications facilite la gestion du journal des conflits spécifié par pConflictLogAccess, en résolvant les conflits figurant dans le journal et en supprimant du journal ceux qui sont obsolètes. L'applicateur de modifications peut également utiliser le journal des conflits pour stocker des conflits temporaires résultant de la fusion de conflits de contraintes. Tous les conflits temporaires ajoutés au journal seront supprimés avant la fin de la session de synchronisation.
Voir aussi
Référence
Interface ISynchronousNotifyingChangeApplier2