X-Git-Url: http://sru.miketaylor.org.uk/?a=blobdiff_plain;f=src%2Fyaz-z-server-sr.cpp;h=fdddaa50ddbe7668f56207cfddd674c3fbbd4943;hb=2d21fb7f6fdf924a2dcbb69722425f555b80821f;hp=4c0b58d7352a11db496081ccc7ec8b11e6d212e4;hpb=ba7a7aa994136b9bb5b775ad84192f96259bd9c0;p=yazpp-moved-to-github.git diff --git a/src/yaz-z-server-sr.cpp b/src/yaz-z-server-sr.cpp index 4c0b58d..fdddaa5 100644 --- a/src/yaz-z-server-sr.cpp +++ b/src/yaz-z-server-sr.cpp @@ -1,20 +1,17 @@ /* - * Copyright (c) 2000-2001, Index Data. + * Copyright (c) 2000-2004, Index Data. * See the file LICENSE for details. * - * $Log: yaz-z-server-sr.cpp,v $ - * Revision 1.2 2001-04-04 14:02:49 adam - * URSULA / Z-ruth service. - * - * Revision 1.1 2001/03/27 15:02:14 adam - * New server facility scheme. + * $Id: yaz-z-server-sr.cpp,v 1.10 2005-06-08 13:28:06 adam Exp $ * */ #include -#include +#include + +using namespace yazpp_1; -Z_Records *Yaz_Facility_Retrieval::pack_records (Yaz_Z_Server *s, +Z_Records *Yaz_Facility_Retrieval::pack_records (Z_Server *s, const char *resultSetName, int start, int xnum, Z_RecordComposition *comp, @@ -36,9 +33,6 @@ Z_Records *Yaz_Facility_Retrieval::pack_records (Yaz_Z_Server *s, *pres = Z_PRES_SUCCESS; *next = 0; - yaz_log(LOG_LOG, "Request to pack %d+%d", start, toget); - yaz_log(LOG_LOG, "pms=%d, mrs=%d", m_preferredMessageSize, - m_maximumRecordSize); for (recno = start; reclist->num_records < toget; recno++) { Z_NamePlusRecord *this_rec = @@ -69,20 +63,16 @@ Z_Records *Yaz_Facility_Retrieval::pack_records (Yaz_Z_Server *s, */ total_length = odr_total(odr_encode()) - dumped_records; this_length = odr_total(odr_encode()) - total_length; - yaz_log(LOG_LOG, " fetched record, len=%d, total=%d", - this_length, total_length); if (this_length + total_length > m_preferredMessageSize) { /* record is small enough, really */ if (this_length <= m_preferredMessageSize) { - yaz_log(LOG_LOG, " Dropped last normal-sized record"); *pres = Z_PRES_PARTIAL_2; break; } if (this_length >= m_maximumRecordSize) { /* too big entirely */ - yaz_log(LOG_LOG, "Record > maxrcdsz"); reclist->records[reclist->num_records] = this_rec; create_surrogateDiagnostics(odr_encode(), this_rec, this_rec->databaseName, 17, 0); @@ -93,10 +83,9 @@ Z_Records *Yaz_Facility_Retrieval::pack_records (Yaz_Z_Server *s, } else /* record can only be fetched by itself */ { - yaz_log(LOG_LOG, " Record > prefmsgsz"); if (toget > 1) { - yaz_log(LOG_DEBUG, " Dropped it"); + yaz_log(YLOG_DEBUG, " Dropped it"); reclist->records[reclist->num_records] = this_rec; create_surrogateDiagnostics(odr_encode(), this_rec, this_rec->databaseName, @@ -116,7 +105,7 @@ Z_Records *Yaz_Facility_Retrieval::pack_records (Yaz_Z_Server *s, return records; } -void Yaz_Facility_Retrieval::fetch_via_piggyback (Yaz_Z_Server *s, +void Yaz_Facility_Retrieval::fetch_via_piggyback (Z_Server *s, Z_SearchRequest *req, Z_SearchResponse *res) { @@ -176,7 +165,7 @@ void Yaz_Facility_Retrieval::fetch_via_piggyback (Yaz_Z_Server *s, } } -void Yaz_Facility_Retrieval::fetch_via_present (Yaz_Z_Server *s, +void Yaz_Facility_Retrieval::fetch_via_present (Z_Server *s, Z_PresentRequest *req, Z_PresentResponse *res) { @@ -192,7 +181,7 @@ void Yaz_Facility_Retrieval::fetch_via_present (Yaz_Z_Server *s, res->records->u.databaseOrSurDiagnostics->num_records; } -int Yaz_Facility_Retrieval::init(Yaz_Z_Server *s, Z_InitRequest *initRequest, +int Yaz_Facility_Retrieval::init(Z_Server *s, Z_InitRequest *initRequest, Z_InitResponse *initResponse) { Z_Options *req = initRequest->options; @@ -217,7 +206,7 @@ ODR Yaz_Facility_Retrieval::odr_decode() return m_odr_decode; } -int Yaz_Facility_Retrieval::recv(Yaz_Z_Server *s, Z_APDU *apdu_request) +int Yaz_Facility_Retrieval::recv(Z_Server *s, Z_APDU *apdu_request) { Z_APDU *apdu_response; m_odr_encode = s->odr_encode(); @@ -225,8 +214,8 @@ int Yaz_Facility_Retrieval::recv(Yaz_Z_Server *s, Z_APDU *apdu_request) switch (apdu_request->which) { case Z_APDU_searchRequest: - yaz_log (LOG_LOG, "got SearchRequest p=%p", this); apdu_response = s->create_Z_PDU(Z_APDU_searchResponse); + s->transfer_referenceId(apdu_request, apdu_response); sr_search (apdu_request->u.searchRequest, apdu_response->u.searchResponse); if (!apdu_response->u.searchResponse->records) @@ -234,17 +223,17 @@ int Yaz_Facility_Retrieval::recv(Yaz_Z_Server *s, Z_APDU *apdu_request) fetch_via_piggyback(s, apdu_request->u.searchRequest, apdu_response->u.searchResponse); } - s->send_Z_PDU(apdu_response); + s->send_Z_PDU(apdu_response, 0); return 1; case Z_APDU_presentRequest: - yaz_log (LOG_LOG, "got PresentRequest p=%p", this); apdu_response = s->create_Z_PDU(Z_APDU_presentResponse); + s->transfer_referenceId(apdu_request, apdu_response); sr_present (apdu_request->u.presentRequest, apdu_response->u.presentResponse); if (!apdu_response->u.presentResponse->records) fetch_via_present(s, apdu_request->u.presentRequest, apdu_response->u.presentResponse); - s->send_Z_PDU(apdu_response); + s->send_Z_PDU(apdu_response, 0); return 1; } return 0;