Application programming interfaces for managing synchronization state.

Package Specification

This package specifies the API for managing the synchronization state between the local workspace resources and a corresponding variants of those resources. The classes in this package can be used by Subscribers (see the package) or others. The classes are roughly divided into three categories:

  • describing the synchronization state of a one or more resources,
  • notifying interested parties of changes in the synchronization state.
  • filtering a set of resource based on a sync state criteria

Describing the synchronization state of resources

The following classes are provided to accumulate (and possibly filter) the synchronization state of one or more resources.

  • SyncInfo: node which maps a local resource to a corresponding variant resource (and a base resource for three-way compare) and descibes the synchronization state of those resources (e.g. in-sync or incoming-change).
  • SyncInfoSet: a set which contains the out-of-sync SyncInfo for multiple local resources.
  • SyncInfoTree: a specialized set optimized for hierarchical resource based access (e.g. to obtain all out-of-sync children of a particular local resource).

Notifying interested parties of sync info set changes

Interested parties can register with a SyncInfoSet in order to receive notification when a set changes.

  • ISyncInfoSetChangeListener: implementors of this interface can be registered with a SyncInfoSet in order to recieve notification when the contents of the set change.
  • ISyncInfoSetChangeEvent: the type of the events generated by a SyncInfoSet
  • ISyncInfoTreeChangeEvent: specialized ISyncInfoSetChangeEvent generated by SyncInfoTree which includes notification of resource subtree aditions and removals.

Sync info filtering

There are also some additional classes provided to help manage SyncInfoSets

  • SyncInfoFilter: a filter that can be used to test SyncInfo. Long running tests are supported via an IProgressMonitor. SyncInfoSet has API for selecting and rejecting SyncInfo based on a provided filter.
  • FastSyncInfoFilter: a specialized filter that does not support the ue of a progress monitor

Several common filters are provided as inner classes of the two filter classes for doing synchronization state tests and filter compounding (and, or, not).