4.2.2 Requesting Updates

Suppose that versionVectorDiff in a request for updates consists of the following.

{ { guid1, 10, 200 }, { guid1, 203, 300 }, { guid2, 12, 203} }

The server returns gvsnDbGuid=guid1; gvsnVersion=272, (together with a full frsUpdate array). All FRS_UPDATEs whose versions belong to the delta.

{ {guid1, 10, 200 }, { guid1, 203, 272 } }

MUST be included in the return value of the initial call.

To further exemplify the functionality of the RequestUpdates method, a client can receive all updates whose GVSN belong to the previously mentioned version chain vector VV by using a sequence of calls.

The following table shows the initial call to the RequestUpdates method with parameters.

creditsAvailable

256

hashRequested

FALSE

updateRequestType

UPDATE_REQUEST_ALL

versionVectorDiffCount

3

versionVectorDiff (VV)

{ { guid1, 10, 200 }, { guid1, 203, 300 }, { guid2, 12, 203} }

In one possible scenario, the server supplies the output parameters.

frsUpdate

An array of updateCount updates.

updateCount

The number of valid entries in the frsUpdate array.

updateState

UPDATE_STATUS_MORE. The server sent some of the updates whose versions lie within VV, but there are more to be retrieved.

gvsnDbGuid

guid1

gvsnVersion

272

The client then makes another call to the RequestUpdates method to get more updates from VV.

creditsAvailable

256

hashRequested

FALSE

updateRequestType

UPDATE_REQUEST_TOMBSTONES

versionVectorDiffCount

2

versionVectorDiff

{ { guid1, 272, 300 }, { guid2, 12, 203} }

The server responds with the following output parameters.

frsUpdate

An array of 0 updates.

updateCount

0 as there are no tombstones to send.

updateState

UPDATE_STATUS_DONE. The server sent all of the available tombstones whose versions lie within VV.

gvsnDbGuid

A zeroed GUID

gvsnVersion

0

The client then makes another call to the RequestUpdates method to get the live updates from VV.

creditsAvailable

256

hashRequested

FALSE

updateRequestType

UPDATE_REQUEST_LIVE

versionVectorDiffCount

3

versionVectorDiff (VV)

{ { guid1, 10, 200 }, { guid1, 203, 300 }, { guid2, 12, 203} }

The server responds with the following output parameters.

frsUpdate

An array of updateCount updates.

updateCount

The number of valid entries in the frsUpdate array.

updateState

UPDATE_STATUS_MORE. The server sent some of the updates whose versions lie within VV, but there are more to be retrieved.

gvsnDbGuid

guid1

gvsnVersion

272

The client then makes another call to the RequestUpdates method to get the remaining live updates.

creditsAvailable

256

hashRequested

FALSE

updateRequestType

UPDATE_REQUEST_LIVE

versionVectorDiffCount

2

versionVectorDiff

{ { guid1, 272, 300 }, { guid2, 12, 203} }

The server responds with the following output parameters.

frsUpdate

An array of updateCount updates.

updateCount

The number of valid entries in the frsUpdate array.

updateState

UPDATE_STATUS_DONE. There are no more live updates to send.

gvsnDbGuid

A zeroed GUID

gvsnVersion

0

Show: