3.2.6.4.5 RoutingLink
The MQDS client MUST perform the following actions:
If iAttributeList was not provided as an argument, then an iAttributeList MUST be constructed that MUST contain the names of all RoutingLink directory attributes listed in [MS-MQDMPR] section 3.1.1.8.
The value of iAttributeList MUST be copied to ReadIterator.AttributeList.
The pColumns argument for the S_DSLookupBegin method (section 3.1.4.17) MUST be computed. For each RoutingLink attribute listed in the following table that appears in iAttributeList, the corresponding property identifier MUST be added to the aCol field of the MQCOLUMNSET structure unless it is already present. (aCol MUST not contain duplicates.) RoutingLink attributes that appear in iAttributeList but are not listed in the following table MUST be ignored, and the corresponding entry in iAttributeSortOrder, if any, MUST be removed.
RoutingLink attribute
Property identifier
Site1Identifier
Site2Identifier
PROPID_L_NEIGHBOR2 ([MS-MQMQ] section 2.3.7.2)
Cost
PROPID_L_COST ([MS-MQMQ] section 2.3.7.3
Identifier
PROPID_L_ID ([MS-MQMQ] section 2.3.7.6
SiteGateIdentifierList
PROPID_L_GATES ([MS-MQMQ] section 2.3.7.13)
Site1FullPath
PROPID_L_NEIGHBOR1_DN ([MS-MQMQ] section 2.3.7.8)
Site2FullPath
PROPID_L_NEIGHBOR2_DN ([MS-MQMQ] section 2.3.7.9)
Description
PROPID_L_DESCRIPTION ([MS-MQMQ] section 2.3.7.10)
FullPath
PROPID_L_FULL_PATH ([MS-MQMQ] section 2.3.7.11)
ActualCost
PROPID_L_ACTUAL_COST ([MS-MQMQ] section 2.3.7.12)
The list of property identifiers in the aCol field of the MQCOLUMNSET structure MUST be copied to ReadIterator.PropidList.
The pRestriction argument for the S_DSLookupBegin method MUST be computed. For each attribute-filter expression that appears in iFilter, a MQPROPERTYRESTRICTION structure (section 2.2.11) MUST be added to the paPropRes field of the MQRESTRICTION structure. The MQPROPERTYRESTRICTION structure MUST be initialized as follows:
The value of the rel field MUST be computed from the operator in the attribute-filter expression according to the table in section 2.2.11.
The value of the prop field MUST be set to the property identifier that corresponds to the RoutingLink attribute specified in the attribute-filter expression according to the table above.
The value of the prval field MUST be computed from the value in the original expression according to the following table.
Filtering on attribute
Filter value computation
Site1Identifier
copy
Site2Identifier
copy
Cost
copy
Identifier
copy
SiteGateIdentifierList
copy
Site1FullPath
copy
Site2FullPath
copy
Description
copy
FullPath
copy
FullPath
copy
The pSort argument for the S_DSLookupBegin method MUST be computed. For each attribute-sort-order expression that appears in iAttributeSortOrder that has a nonzero SortPriority, a MQSORTKEY structure (section 2.2.14) MUST be added to the aCol field of the MQSORTSET structure. The attribute-sort-order expressions MUST be processed in priority order according to the SortPriority field, highest priority first. Each MQSORTKEY structure MUST be initialized as follows:
The propColumn field MUST be set to the property identifier that corresponds to the RoutingLink attribute indicated by the attribute-sort-order expression, according to the first table in this section.
The dwOrder field MUST be set to QUERY_SORTASCEND if SortAscend is TRUE, or QUERY_SORTDESCEND if SortAscend is FALSE.
Other input arguments for the S_DSLookupBegin method MUST be computed as described in section 3.1.4.17.
The S_DSLookupBegin method MUST be called with the given arguments. If the return value is not MQ_OK, processing MUST end. rStatus MUST be set to DirectoryOperationResult.GenericError and rQueryHandle is undefined.
Processing MUST end. rStatus MUST be set to DirectoryOperationResult.Success. rQueryHandle MUST be set to the PCONTEXT_HANDLE_TYPE returned by S_DSLookupBegin.