+ yaz_log (m_log, "recv_Z_PDU %d bytes", len);
+ m_lastReceived = apdu->which;
+ switch (apdu->which)
+ {
+ case Z_APDU_initResponse:
+ yaz_log (m_log, "recv InitResponse");
+ recv_initResponse(apdu->u.initResponse);
+ break;
+ case Z_APDU_initRequest:
+ yaz_log (m_log, "recv InitRequest");
+ recv_initRequest(apdu->u.initRequest);
+ break;
+ case Z_APDU_searchRequest:
+ yaz_log (m_log, "recv searchRequest");
+ recv_searchRequest(apdu->u.searchRequest);
+ break;
+ case Z_APDU_searchResponse:
+ yaz_log (m_log, "recv searchResponse");
+ recv_searchResponse(apdu->u.searchResponse);
+ break;
+ case Z_APDU_presentRequest:
+ yaz_log (m_log, "recv presentRequest");
+ recv_presentRequest(apdu->u.presentRequest);
+ break;
+ case Z_APDU_presentResponse:
+ yaz_log (m_log, "recv presentResponse");
+ recv_presentResponse(apdu->u.presentResponse);
+ break;
+ case Z_APDU_extendedServicesResponse:
+ yaz_log (m_log, "recv extendedServiceResponse");
+ recv_extendedServicesResponse(apdu->u.extendedServicesResponse);
+ break;
+ }
+}
+
+int Yaz_IR_Assoc::send_searchRequest(Yaz_Z_Query *query,
+ char* pResultSetId,
+ char* pRefId)
+{
+ Z_APDU *apdu = create_Z_PDU(Z_APDU_searchRequest);
+ Z_SearchRequest *req = apdu->u.searchRequest;
+ int recordSyntax;
+
+ req->query = query->get_Z_Query();
+ if (!req->query)
+ return -1;
+ get_databaseNames (&req->num_databaseNames, &req->databaseNames);
+ int oid_syntax[OID_SIZE];
+ oident prefsyn;
+ get_preferredRecordSyntax(&recordSyntax);
+ if (recordSyntax != VAL_NONE)
+ {
+ prefsyn.proto = PROTO_Z3950;
+ prefsyn.oclass = CLASS_RECSYN;
+ prefsyn.value = (enum oid_value) recordSyntax;
+ oid_ent_to_oid(&prefsyn, oid_syntax);
+ req->preferredRecordSyntax = oid_syntax;
+ }
+ yaz_log (m_log, "send_searchRequest");
+ assert (req->otherInfo == 0);
+ if (m_cookie)
+ {
+ set_otherInformationString(&req->otherInfo, VAL_COOKIE, 1, m_cookie);
+ assert (req->otherInfo);
+ }
+
+ if ( pRefId )
+ {
+ req->referenceId = getRefID(pRefId);
+ }
+
+ if ( pResultSetId )
+ {
+ req->resultSetName = pResultSetId;
+ }
+
+ return send_Z_PDU(apdu, 0);