ItemChange::AddFilterChange Method
Adds information that indicates whether this change causes the item to move in or out of a specified filter.
Assembly: Microsoft.Synchronization (in Microsoft.Synchronization.dll)
Parameters
- filterKey
- Type: System::UInt32
The key of the filter that the item is moving into or out of.
- filterChange
- Type: Microsoft.Synchronization::FilterChange
Information about the change in relation to the filter specified by filterKey.
| Exception | Condition |
|---|---|
| ArgumentNullException | A required parameter is a nullptr. |
| ArgumentOutOfRangeException | filterKey is an invalid value. |
| SyncInvalidOperationException | Filter change information already exists for filterKey. |
The following example adds filter change information to an ItemChange object when the move version for the item in relation to the filter is not contained in the destination knowledge.
Public Sub AddFilterChanges(ByVal filterKeyMap As FilterKeyMap, ByVal itemMeta As ItemMetadata, ByVal destKnowledge As SyncKnowledge, ByVal itemChange As ItemChange) For filterKey As Integer = 0 To filterKeyMap.Count - 1 ' Find the filter in the list of all filters tracked by this replica. Dim iFilter As Integer = 0 While iFilter < _trackedFilters.Count If filterKeyMap(filterKey).IsIdentical(_trackedFilters(iFilter)) Then Exit While End If iFilter += 1 End While ' Get the filter information for the item and add it to the ItemChange object. Dim moveVersion As SyncVersion = GetMoveVersion(itemMeta, iFilter) ' Only return a filter change if the destination knowledge does not contain the version of the ' last move that occurred in relation to the specified filter. Dim filterChange As FilterChange = Nothing If Not destKnowledge.Contains(ContactReplicaMetadata.ReplicaId, itemMeta.GlobalId, moveVersion) Then filterChange = New FilterChange(GetIsInFilter(itemMeta, iFilter), moveVersion) itemChange.AddFilterChange(CUInt(filterKey), filterChange) End If Next End Sub
public void AddFilterChanges(FilterKeyMap filterKeyMap, ItemMetadata itemMeta, SyncKnowledge destKnowledge, ItemChange itemChange) { for (int filterKey = 0; filterKey < filterKeyMap.Count; filterKey++) { // Find the filter in the list of all filters tracked by this replica. int iFilter = 0; for (; iFilter < _trackedFilters.Count; iFilter++) { if (filterKeyMap[filterKey].IsIdentical(_trackedFilters[iFilter])) { break; } } // Get the filter information for the item and add it to the ItemChange object. SyncVersion moveVersion = GetMoveVersion(itemMeta, iFilter); // Only return a filter change if the destination knowledge does not contain the version of the // last move that occurred in relation to the specified filter. FilterChange filterChange = null; if (!destKnowledge.Contains(ContactReplicaMetadata.ReplicaId, itemMeta.GlobalId, moveVersion)) { filterChange = new FilterChange(GetIsInFilter(itemMeta, iFilter), moveVersion); itemChange.AddFilterChange((uint)filterKey, filterChange); } } }
Show: