-std::ostream& std::operator<<(std::ostream& os, Z_SRW_PDU& srw_pdu)
-{
- os << "SRU";
-
- switch(srw_pdu.which) {
- case Z_SRW_searchRetrieve_request:
- os << " " << "searchRetrieveRequest";
- {
- Z_SRW_searchRetrieveRequest *sr = srw_pdu.u.request;
- if (sr)
- {
- if (sr->database)
- os << " " << (sr->database);
- else
- os << " -";
- if (sr->startRecord)
- os << " " << *(sr->startRecord);
- else
- os << " -";
- if (sr->maximumRecords)
- os << " " << *(sr->maximumRecords);
- else
- os << " -";
- if (sr->recordPacking)
- os << " " << (sr->recordPacking);
- else
- os << " -";
-
- if (sr->recordSchema)
- os << " " << (sr->recordSchema);
- else
- os << " -";
-
- switch (sr->query_type){
- case Z_SRW_query_type_cql:
- os << " CQL";
- if (sr->query.cql)
- os << " " << sr->query.cql;
- break;
- case Z_SRW_query_type_xcql:
- os << " XCQL";
- break;
- case Z_SRW_query_type_pqf:
- os << " PQF";
- if (sr->query.pqf)
- os << " " << sr->query.pqf;
- break;
- }
- }
- }
- break;
- case Z_SRW_searchRetrieve_response:
- os << " " << "searchRetrieveResponse";
- {
- Z_SRW_searchRetrieveResponse *sr = srw_pdu.u.response;
- if (sr)
- {
- if (! (sr->num_diagnostics))
- {
- os << " OK";
- if (sr->numberOfRecords)
- os << " " << *(sr->numberOfRecords);
- else
- os << " -";
- //if (sr->num_records)
- os << " " << (sr->num_records);
- //else
- //os << " -";
- if (sr->nextRecordPosition)
- os << " " << *(sr->nextRecordPosition);
- else
- os << " -";
- }
- else
- {
- os << " DIAG";
- if (sr->diagnostics && sr->diagnostics->uri)
- os << " " << (sr->diagnostics->uri);
- else
- os << " -";
- if (sr->diagnostics && sr->diagnostics->message)
- os << " " << (sr->diagnostics->message);
- else
- os << " -";
- if (sr->diagnostics && sr->diagnostics->details)
- os << " " << (sr->diagnostics->details);
- else
- os << " -";
- }
-
-
- }
- }
- break;
- case Z_SRW_explain_request:
- os << " " << "explainRequest";
- break;
- case Z_SRW_explain_response:
- os << " " << "explainResponse";
- break;
- case Z_SRW_scan_request:
- os << " " << "scanRequest";
- break;
- case Z_SRW_scan_response:
- os << " " << "scanResponse";
- break;
- case Z_SRW_update_request:
- os << " " << "updateRequest";
- break;
- case Z_SRW_update_response:
- os << " " << "updateResponse";
- break;
- default:
- os << " " << "UNKNOWN";
- }
-
- return os;
-}
-
-
-// {
-// Z_InitRequest *ir
-// = zapdu.u.initRequest;
-
-// Z_IdAuthentication *a = ir->idAuthentication;
-// if (a && a->which == Z_IdAuthentication_idPass )
-// os << a->u.idPass->userId << " ";
-// //<< ":" << a->u.idPass->groupId << " ";
-// else
-// os << "-" << " ";
-
-// std::list<std::string> vhosts;
-// mp::util::get_vhost_otherinfo(ir->otherInfo, vhosts);
-// if (vhosts.size()){
-// copy(vhosts.begin(), vhosts.end(),
-// ostream_iterator<string>(os, " "));
-// }
-// else
-// os << "-" << " " ;
-
-// os << (ir->implementationId) << " "
-// //<< ir->referenceId << " "
-// << (ir->implementationName) << " "
-// << (ir->implementationVersion);
-// }
-// break;
-// case Z_APDU_initResponse:
-// os << " " << "initResponse" << " ";
-// {
-// Z_InitResponse *ir
-// = zapdu.u.initResponse;
-// if (ir->result && *(ir->result))
-// os << "OK" << " "
-// << (ir->implementationId) << " "
-// //<< ir->referenceId << " "
-// << (ir->implementationName) << " "
-// << (ir->implementationVersion) << " ";
-// else
-// os << "DIAG";
-// }
-// break;
-// case Z_APDU_searchRequest:
-// os << " " << "searchRequest" << " ";
-// {
-// Z_SearchRequest *sr
-// = zapdu.u.searchRequest;
-
-// for (int i = 0; i < sr->num_databaseNames; i++)
-// {
-// os << sr->databaseNames[i];
-// if (i+1 == sr->num_databaseNames)
-// os << " ";
-// else
-// os << "+";
-// }
-
-// WRBUF wr = wrbuf_alloc();
-// yaz_query_to_wrbuf(wr, sr->query);
-// os << wrbuf_buf(wr);
-// wrbuf_free(wr, 1);
-// }
-// break;
-