- // z3950'fy number of records requested
- if (sr_req->maximumRecords)
- *(apdu->u.presentRequest->numberOfRecordsRequested)
- = *(sr_req->maximumRecords);
-
- // z3950'fy recordPacking
- int record_packing = Z_SRW_recordPacking_XML;
- if (sr_req->recordPacking && 's' == *(sr_req->recordPacking))
- record_packing = Z_SRW_recordPacking_string;
-
- // RecordSyntax will always be XML
- (apdu->u.presentRequest->preferredRecordSyntax)
- = yaz_oidval_to_z3950oid (odr_en, CLASS_RECSYN, VAL_TEXT_XML);
-
- // z3950'fy record schema
- if (sr_req->recordSchema)
- {
- apdu->u.presentRequest->recordComposition
- = (Z_RecordComposition *) odr_malloc(odr_en, sizeof(Z_RecordComposition));
- apdu->u.presentRequest->recordComposition->which
- = Z_RecordComp_simple;
- apdu->u.presentRequest->recordComposition->u.simple
- = build_esn_from_schema(odr_en, (const char *) sr_req->recordSchema);
- }
-
- // z3950'fy time to live - flagged as diagnostics above
- //if (sr_req->resultSetTTL)
-
- // attaching Z3950 package to filter chain
- z3950_package.request() = apdu;
-
- //std::cout << "z3950_present_request " << *apdu << "\n";
- z3950_package.move();
-
- //check successful Z3950 present response
- Z_GDU *z3950_gdu = z3950_package.response().get();
- if (!z3950_gdu || z3950_gdu->which != Z_GDU_Z3950
- || z3950_gdu->u.z3950->which != Z_APDU_presentResponse
- || !z3950_gdu->u.z3950->u.presentResponse)
-