IReplicaMetadata::GetFilteredChangeBatch
Obtém um lote de alterações que contém metadados dos itens que não estão contidos no conhecimento especificado do provedor de destino e que são aceitos pelo filtro especificado.
HRESULT GetFilteredChangeBatch(
DWORD dwBatchSize,
ISyncKnowledge *pSyncKnowledge,
ISyncFilterInfo * pFilterInfo,
IChangeBatchCallback *pCallback,
ISyncChangeBatch ** ppSyncChangeBatch);
Parâmetros
- dwBatchSize
[in] O tamanho do lote que será criado.
- pSyncKnowledge
[in] O conhecimento do provedor de destino.
- pFilterInfo
[in] Informações sobre o filtro que controla quais itens devem ser incluídos no lote de alterações.
- pCallback
[in, unique] Uma interface de retorno de chamada que é chamada para determinar se um item deve ou não ser adicionado ao lote.
- ppSyncChangeBatch
[out] Retorna o lote seguinte de alterações.
Valor de retorno
S_OK
E_POINTER
E_INVALIDARG quando dwBatchSize for 0.
Comentários
Este método ajuda um provedor de sincronização a implementar seu método IKnowledgeSyncProvider::GetChangeBatch quando uma sincronização filtrada tiver sido especificada.
O método IChangeBatchCallback::OnAddingItemToBatch de pCallback será chamado antes de cada item ser adicionado a um lote. Se o método retornar TRUE em seu parâmetro pfShouldIncludeInBatch, o item será adicionado ao lote; caso contrário, ele não será adicionado.
Antes de os provedores chamarem este método, eles devem garantir que as versões no repositório de metadados reflitam todas as alterações locais, inclusive exclusões. Isso pode ser feito por uma passagem de manutenção de metadados explícita para enumerar itens e atualizar seus metadados.
A implementação desta classe disponível através de ISqlSyncMetadataStore adiciona alterações ao lote de alterações na ordem da ID global.
A implementação desta classe disponível através de ISqlSyncMetadataStore chama SetLastBatch no lote de alterações retornado quando não há mais nenhuma alteração a ser enviada.
Observações para implementadores
Para ajudar um provedor que usa uma ordenação da ID global e tem a capacidade de usar intervalos, as alterações devem ser enumeradas e adicionadas ao lote de alterações na ordem da ID global. A primeira alteração do lote de alterações retornado inicia um novo intervalo.
Se não houver mais nenhuma alteração a ser enviada depois deste lote, será necessário chamar SetLastBatch no lote de alterações retornado ou Sync Framework chamará IKnowledgeSyncProvider::GetChangeBatch novamente para recuperar outro lote de alterações.