3.1.4.2 Query Changes Sub-Request Processing
The Query Changes sub-request, as specified in section 2.2.2.1.3, is used by the protocol client to get a full or partial set of data elements for the current state of the file. The server MUST reply back to the client with a Query Changes sub-response, as specified in section 2.2.3.1.2.<30>
If Request Data Element Hashes (section 2.2.2) is 1 or Request Data Element Hashes Instead of Data (section 2.2.2) is 1, the server MUST return Data Element Hashes (section 2.2.2) in the schema specified by Request Hashing Schema (section 2.2.2) for Object Group data elements (section 2.2.1.12.6) that the protocol server has chosen to hash with the specified schema.
If Request Data Element Hashes Instead of Data is 1, the protocol server MUST return an Object Group Object Excluded Data for the Object Declaration of each Object Group data element that includes a Data Element Hash.
A Data Element Hash returned by the protocol server MUST be computed by hashing a byte stream consisting of an ordered concatenation of the Object Data Data binary items, as specified in section 2.2.1.12.6.4, in the Object Group data element being hashed. The concatenation order MUST be by sorted order from smallest to largest using the Object Order Compare Method as specified below.
Object Order Compare Method
The Object Order Compare Method utilizes the Object Extended GUID, as specified in section 2.2.1.12.6.1, and the Object Partition ID, as specified in section 2.2.1.12.6.1, to compare two objects for the purpose of creating the sorted smallest-to-largest concatenation order.
For the purposes of the Object Order Compare Method, the 16-byte GUID portion of an Object Extended GUID, as specified in section 2.2.1.7, is specified as follows.
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
3 |
|
|||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Data 1 |
||||||||||||||||||||||||||||||||||
Data 2 |
Data 3 |
|||||||||||||||||||||||||||||||||
Data 4 |
Data 5 |
Data 6 |
Data 7 |
|||||||||||||||||||||||||||||||
Data 8 |
Data 9 |
Data 10 |
Data 11 |
|||||||||||||||||||||||||||||||
Data 1: An unsigned 32 bit integer specifying an opaque value.
Data 2: An unsigned 16 bit integer specifying an opaque value.
Data 3: An unsigned 16 bit integer specifying an opaque value
Data 4: An unsigned 8 bit integer specifying an opaque value.
Data 5: An unsigned 8 bit integer specifying an opaque value.
Data 6: An unsigned 8 bit integer specifying an opaque value.
Data 7: An unsigned 8 bit integer specifying an opaque value.
Data 8: An unsigned 8 bit integer specifying an opaque value.
Data 9: An unsigned 8 bit integer specifying an opaque value.
Data 10: An unsigned 8 bit integer specifying an opaque value.
Data 11: An unsigned 8 bit integer specifying an opaque value.
The following table specifies the compare method for two objects, Object A and Object B.
Step |
Data to compare |
Compare method |
A < B |
A = B |
A > B |
---|---|---|---|---|---|
1. |
Object Extended GUID: Value |
Unsigned 32 bit integer comparison |
A is less than B. Stop. |
Continue to step 2. |
A is greater than B. Stop |
2. |
Object Extended GUID: Data 1 |
Unsigned 32 bit integer comparison |
A is less than B. Stop. |
Continue to step 3. |
A is greater than B. Stop |
3. |
Object Extended GUID: Data 2 |
Unsigned 16 bit integer comparison |
A is less than B. Stop. |
Continue to step 4. |
A is greater than B. Stop |
4. |
Object Extended GUID: Data 3 |
Unsigned 16 bit integer comparison |
A is less than B. Stop. |
Continue to step 5. |
A is greater than B. Stop |
5. |
Object Extended GUID: Data 4 |
Unsigned 8 bit integer comparison |
A is less than B. Stop. |
Continue to step 6. |
A is greater than B. Stop |
6. |
Object Extended GUID: Data 5 |
Unsigned 8 bit integer comparison |
A is less than B. Stop. |
Continue to step 7. |
A is greater than B. Stop |
7. |
Object Extended GUID: Data 6 |
Unsigned 8 bit integer comparison |
A is less than B. Stop. |
Continue to step 8. |
A is greater than B. Stop |
8. |
Object Extended GUID: Data 7 |
Unsigned 8 bit integer comparison |
A is less than B. Stop. |
Continue to step 9. |
A is greater than B. Stop |
9. |
Object Extended GUID: Data 8 |
Unsigned 8 bit integer comparison |
A is less than B. Stop. |
Continue to step 10. |
A is greater than B. Stop |
10. |
Object Extended GUID: Data 9 |
Unsigned 8 bit integer comparison |
A is less than B. Stop. |
Continue to step 11. |
A is greater than B. Stop |
11. |
Object Extended GUID: Data 10 |
Unsigned 8 bit integer comparison |
A is less than B. Stop. |
Continue to step 12. |
A is greater than B. Stop |
12. |
Object Extended GUID: Data 11 |
Unsigned 8 bit integer comparison |
A is less than B. Stop. |
Continue to step 13. |
A is greater than B. Stop |
13. |
Object Partition ID |
Unsigned 64 bit integer comparison. |
A is less than B. |
Undefined. |
A is greater than B. |