Поделиться через


IReplicaMetadata::GetFilteredChangeBatch

Возвращает пакет изменений, содержащий метаданные элементов, которые отсутствовали в указанном наборе знаний от поставщика назначения и были приняты указанным фильтром.

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

Параметры

  • dwBatchSize
    [in] Размер создаваемого пакета.
  • pSyncKnowledge
    [in] Набор знаний от поставщика назначения.
  • pFilterInfo
    [in] Сведения о фильтре, который управляет тем, какие элементы подлежат включению в пакет изменений.
  • pCallback
    [in, unique] Интерфейс ответного вызова, который вызывается для определения необходимости добавления элемента в пакет.
  • ppSyncChangeBatch
    [out] Возвращает следующий пакет изменений.

Возвращаемое значение

  • S_OK

  • E_POINTER

  • E_INVALIDARG, если значение dwBatchSize равно 0.

Замечания

Этот метод упрощает реализацию метода IKnowledgeSyncProvider::GetChangeBatch службы синхронизации, если задана синхронизация с фильтрацией.

Метод IChangeBatchCallback::OnAddingItemToBatch параметра pCallback будет вызываться перед добавлением каждого элемента в пакет. Если метод вернул значение TRUE в параметре pfShouldIncludeInBatch, то элемент добавляется в пакет. В противном случае добавление элемента не производится.

Перед вызовом этого метода поставщик должен убедиться, что версии в хранилище метаданных отражают все локальные изменения, включая операции удаления. Это достигается с помощью явного этапа обслуживания метаданных, в котором перечисляются элементы и обновляются их метаданные.

Реализация этого класса, которая возможна через ISqlSyncMetadataStore, добавляет изменения в пакет изменений в порядке глобальных идентификаторов.

Реализация этого класса, которая возможна через ISqlSyncMetadataStore, вызывает метод SetLastBatch для возвращаемого пакета изменений, когда больше нет изменений для отправки.

Примечания по реализации

Чтобы упростить задачу поставщика, использующего порядок глобальных идентификаторов и имеющего возможность использования диапазонов, изменения следует перечислить и добавить в пакет изменений в порядке глобальных идентификаторов. Первое изменение в возвращаемом пакете открывает новый диапазон.

Если после этого пакета больше изменений для отправки нет, необходимо вызвать метод SetLastBatch для возвращаемого пакета изменений, в противном случае Sync Framework снова вызовет метод IKnowledgeSyncProvider::GetChangeBatch для получения следующего пакета изменений.

См. также

Справочник

Интерфейс IReplicaMetadata