4.1.12.3 Client Behavior When Sending the IDL_DRSGetObjectExistence Request

Informative summary of behavior: The client uses IDL_DRSGetObjectExistence to check the consistency of object existence between its replica of an NC and another replica of the same NC. Checking the consistency of object existence means identifying objects that have replicated to both replicas, and that exist in one replica but not in the other. For the purposes of this method, an object exists within an NC replica if it is either an object or a tombstone.

IDL_DRSGetObjectExistence allows the client to perform this checking in clusters, as defined in the informative summary of the GuidSequence procedure (section 4.1.12.2.1).

The inputs to this checking process on the client are as follows:

 nc: DSName
 utdClient, utdServer: UPTODATE_VECTOR_V1_EXT
 guidStart: GUID
 count: ULONG

nc: The NC containing the cluster that the client will check.

utdClient, utdServer: The up-to-date vectors of the client and server for the NC nc, respectively. The client can obtain utdServer using IDL_DRSGetReplInfo.

guidStart: The lower bound on the smallest objectGUID in the cluster that the client will check.

count: The upper bound on the number of objects in the cluster that the client will check.

Given these inputs, the client creates the request message to IDL_DRSGetObjectExistence as follows:<32>

  
 msgIn: DRS_MSG_EXISTREQ_V1
 s: sequence
 digest: sequence [0..15] of byte
  
 msgIn.pNC := nc
 msgIn.pUpToDateVecCommonV1 := MergeUTD(utdClient, utdServer)
 GuidSequence(
     guidStart, count, nc, msgIn.pUpToDateVecCommonV1^, s, digest)
 msgIn.guidStart := s[0]
 msgIn.length := s.length
 msgIn.Md5Digest := digest
 pmsgIn^.V1 := msgIn