3.2.4.1 State Diagram

The following state diagram illustrates how a protocol client SHOULD download items from a protocol server using this protocol. The first decision the protocol client makes is whether TimeElapsedSinceLastSync is large enough. TimeElapsedSinceLastSync is large enough if it is greater than both the MinTimeBetweenSyncs and RecommendedTimeBetweenSyncs attributes of the GetListItemChangesSinceTokenResponse.GetListItemChangesSinceTokenResult.listitems element specified in [MS-LISTSWS]. Protocol clients SHOULD NOT ignore MinTimeBetweenSyncs, but protocol clients can ignore RecommendedTimeBetweenSyncs.<17>

State diagram showing the sequence of decisions and operations performed by a protocol client

Figure 2: State diagram showing the sequence of decisions and operations performed by a protocol client

The "Need to get more results" transition in the diagram refers to when protocol clients download items in batches. See [MS-LISTSWS] on GetListItemChangesSinceToken.rowLimit and the following contents of GetListItemChangesSinceTokenResponse.GetListItemChangesSinceTokenResult.listitems.

Name

Purpose and section

data.ListItemCollectionPositionNext

See section 3.2.4.1

Changes.LastChangeToken

See section 3.2.4.1

Changes.MoreChanges

See section 3.2.4.1

The following state diagram specifies the details of the "Upload changes" state shown in the previous diagram showing the sequence of decisions and operations performed by a protocol client.

State diagram detailing the sequence of decisions and operations performed by a protocol client in the "Upload changes" state

Figure 3: State diagram detailing the sequence of decisions and operations performed by a protocol client in the "Upload changes" state

The following diagram specifies the details of the "Upload new and changed non-exception items" state shown in the previous diagram detailing the sequence of decisions and operations performed by a protocol client in the "Upload changes" state. Non exception items are every item type that is not an exception to a recurrence (section 3.2.1.1).

State diagram detailing the sequence of decisions and operations performed by a protocol client in the "Upload new and changed non-exception items" state

Figure 4: State diagram detailing the sequence of decisions and operations performed by a protocol client in the "Upload new and changed non-exception items" state

In addition, if a protocol client receives an error from a remote operation that indicates a connection loss, the protocol client SHOULD select an alternate URL from the GetListItemChangesSinceTokenResponse.GetListItemChangesSinecTokenResult.listitems.AlternateUrls attribute (see [MS-LISTSWS]). The protocol client SHOULD then restart the sync process using the new URL. If an operation on that URL has failed recently, then protocol clients SHOULD NOT try to use that URL again. The definition of "failed recently" is up to each individual protocol client and is not specified by this protocol.