IReplicaMetadata::GetFilteredChangeBatch

Obtiene un lote de cambios que contiene metadatos de elemento para los elementos no contenidos en el conocimiento especificado del proveedor de destino y que son aceptados por el filtro especificado.


HRESULT GetFilteredChangeBatch(
  DWORD dwBatchSize,
  ISyncKnowledge *pSyncKnowledge,
  ISyncFilterInfo * pFilterInfo,
  IChangeBatchCallback *pCallback,
  ISyncChangeBatch ** ppSyncChangeBatch);

dwBatchSize

[in] Tamaño del lote que se va a crear.

pSyncKnowledge

[in] Conocimiento del proveedor de destino.

pFilterInfo

[in] Información sobre el filtro que controla los elementos que se incluyen en el lote de cambios.

pCallback

[in, unique] Interfaz de devolución de llamada a la que se llama para determinar si se debería agregar un elemento al lote.

ppSyncChangeBatch

[out] Devuelve el siguiente lote de cambios.

  • S_OK

  • E_POINTER

  • E_INVALIDARG si dwBatchSize es 0.

Este método ayuda a un proveedor de sincronización a implementar su método IKnowledgeSyncProvider::GetChangeBatch cuando se ha especificado una sincronización filtrada.

Se llamará al método IChangeBatchCallback::OnAddingItemToBatch de pCallback antes de agregar cada elemento a un lote. Si el método devuelve TRUE en su parámetro pfShouldIncludeInBatch, el elemento se agrega al lote; en caso contrario, no se agrega.

Antes de que los proveedores llamen a este método, deben asegurarse de que las versiones del almacén de metadatos reflejan todos los cambios locales, incluso las eliminaciones. Esto se logra mediante un examen explícito de mantenimiento de metadatos para enumerar los elementos y actualizar sus metadatos.

La implementación de esta clase que está disponible mediante ISqlSyncMetadataStore agrega cambios ordenados según su identificador global al lote de cambios.

La implementación de esta clase que está disponible mediante ISqlSyncMetadataStore llama a SetLastBatch en el lote de cambios devuelto cuando no quedan cambios por enviar.

Para ayudar a un proveedor que usa la ordenación por identificadores globales y tiene la capacidad de usar intervalos, los cambios se deberían enumerar y agregar al lote de cambios de acuerdo con el orden de los identificadores globales. El primer cambio del lote de cambios devuelto inicia un nuevo intervalo.

Si no queda ningún cambio por enviar después de este lote, se debe llamar a SetLastBatch en el lote de cambios devuelto, o Sync Framework llamará de nuevo a IKnowledgeSyncProvider::GetChangeBatch para recuperar otro lote de cambios.

Mostrar: