X-Git-Url: http://sru.miketaylor.org.uk/?a=blobdiff_plain;ds=sidebyside;f=src%2Futil.cpp;h=8bb34f972460f46d5b6ac89c8e77a222fc28cf6a;hb=79100c2ae2dac4bdde4f4d46b69e147562b4ec6c;hp=c8cf573b81248f97cb8d22aadc49962a4a46e1e7;hpb=1751782d8e3c9d4574754463ffd43373cf92133a;p=metaproxy-moved-to-github.git diff --git a/src/util.cpp b/src/util.cpp index c8cf573..8bb34f9 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -1,5 +1,5 @@ -/* $Id: util.cpp,v 1.12 2006-01-19 21:43:51 adam Exp $ - Copyright (c) 2005, Index Data. +/* $Id: util.cpp,v 1.14 2006-03-16 10:40:59 adam Exp $ + Copyright (c) 2005-2006, Index Data. %LICENSE% */ @@ -9,9 +9,14 @@ #include #include #include +#include // for yaz_query_to_wrbuf() #include "util.hpp" -void yp2::util::piggyback(int smallSetUpperBound, +//#include + +namespace mp = metaproxy_1; + +void mp::util::piggyback(int smallSetUpperBound, int largeSetLowerBound, int mediumSetPresentNumber, int result_set_size, @@ -38,7 +43,8 @@ void yp2::util::piggyback(int smallSetUpperBound, } } -bool yp2::util::pqf(ODR odr, Z_APDU *apdu, const std::string &q) { + +bool mp::util::pqf(ODR odr, Z_APDU *apdu, const std::string &q) { YAZ_PQF_Parser pqf_parser = yaz_pqf_create(); Z_RPNQuery *rpn = yaz_pqf_parse(pqf_parser, odr, q.c_str()); @@ -56,7 +62,50 @@ bool yp2::util::pqf(ODR odr, Z_APDU *apdu, const std::string &q) { return true; } -void yp2::util::get_default_diag(Z_DefaultDiagFormat *r, + +std::string mp::util::zQueryToString(Z_Query *query) +{ + std::string query_str = ""; + + if (query && query->which == Z_Query_type_1){ + Z_RPNQuery *rpn = query->u.type_1; + + if (rpn){ + + // allocate wrbuf (strings in YAZ!) + WRBUF w = wrbuf_alloc(); + + // put query in w + yaz_rpnquery_to_wrbuf(w, rpn); + + // from w to std::string + query_str = std::string(wrbuf_buf(w), wrbuf_len(w)); + + // destroy wrbuf + wrbuf_free(w, 1); + } + } + +#if 0 + if (query && query->which == Z_Query_type_1){ + + // allocate wrbuf (strings in YAZ!) + WRBUF w = wrbuf_alloc(); + + // put query in w + yaz_query_to_wrbuf(w, query); + + // from w to std::string + query_str = std::string(wrbuf_buf(w), wrbuf_len(w)); + + // destroy wrbuf + wrbuf_free(w, 1); + } +#endif + return query_str; +} + +void mp::util::get_default_diag(Z_DefaultDiagFormat *r, int &error_code, std::string &addinfo) { error_code = *r->condition; @@ -71,7 +120,7 @@ void yp2::util::get_default_diag(Z_DefaultDiagFormat *r, } } -void yp2::util::get_init_diagnostics(Z_InitResponse *initrs, +void mp::util::get_init_diagnostics(Z_InitResponse *initrs, int &error_code, std::string &addinfo) { Z_External *uif = initrs->userInformationField; @@ -95,7 +144,7 @@ void yp2::util::get_init_diagnostics(Z_InitResponse *initrs, { Z_DiagnosticFormat_s *ds = diag->elements[0]; if (ds->which == Z_DiagnosticFormat_s_defaultDiagRec) - yp2::util::get_default_diag(ds->u.defaultDiagRec, + mp::util::get_default_diag(ds->u.defaultDiagRec, error_code, addinfo); } } @@ -103,7 +152,7 @@ void yp2::util::get_init_diagnostics(Z_InitResponse *initrs, } } -int yp2::util::get_vhost_otherinfo(Z_OtherInformation **otherInformation, +int mp::util::get_vhost_otherinfo(Z_OtherInformation **otherInformation, bool remove_flag, std::list &vhosts) { @@ -124,7 +173,7 @@ int yp2::util::get_vhost_otherinfo(Z_OtherInformation **otherInformation, return cat; } -void yp2::util::set_vhost_otherinfo(Z_OtherInformation **otherInformation, +void mp::util::set_vhost_otherinfo(Z_OtherInformation **otherInformation, ODR odr, const std::list &vhosts) { @@ -137,7 +186,7 @@ void yp2::util::set_vhost_otherinfo(Z_OtherInformation **otherInformation, } } -void yp2::util::split_zurl(std::string zurl, std::string &host, +void mp::util::split_zurl(std::string zurl, std::string &host, std::list &db) { const char *zurl_cstr = zurl.c_str(); @@ -167,7 +216,7 @@ void yp2::util::split_zurl(std::string zurl, std::string &host, } } -bool yp2::util::set_databases_from_zurl(ODR odr, std::string zurl, +bool mp::util::set_databases_from_zurl(ODR odr, std::string zurl, int *db_num, char ***db_strings) { std::string host; @@ -186,27 +235,27 @@ bool yp2::util::set_databases_from_zurl(ODR odr, std::string zurl, return true; } -yp2::odr::odr(int type) +mp::odr::odr(int type) { m_odr = odr_createmem(type); } -yp2::odr::odr() +mp::odr::odr() { m_odr = odr_createmem(ODR_ENCODE); } -yp2::odr::~odr() +mp::odr::~odr() { odr_destroy(m_odr); } -yp2::odr::operator ODR() const +mp::odr::operator ODR() const { return m_odr; } -Z_APDU *yp2::odr::create_close(Z_APDU *in_apdu, +Z_APDU *mp::odr::create_close(Z_APDU *in_apdu, int reason, const char *addinfo) { Z_APDU *apdu = create_APDU(Z_APDU_close, in_apdu); @@ -217,20 +266,20 @@ Z_APDU *yp2::odr::create_close(Z_APDU *in_apdu, return apdu; } -Z_APDU *yp2::odr::create_APDU(int type, Z_APDU *in_apdu) +Z_APDU *mp::odr::create_APDU(int type, Z_APDU *in_apdu) { - return yp2::util::create_APDU(m_odr, type, in_apdu); + return mp::util::create_APDU(m_odr, type, in_apdu); } -Z_APDU *yp2::util::create_APDU(ODR odr, int type, Z_APDU *in_apdu) +Z_APDU *mp::util::create_APDU(ODR odr, int type, Z_APDU *in_apdu) { Z_APDU *out_apdu = zget_APDU(odr, type); - Z_ReferenceId **id_to = yp2::util::get_referenceId(out_apdu); + Z_ReferenceId **id_to = mp::util::get_referenceId(out_apdu); *id_to = 0; if (in_apdu) { - Z_ReferenceId **id_from = yp2::util::get_referenceId(in_apdu); + Z_ReferenceId **id_from = mp::util::get_referenceId(in_apdu); if (id_from && *id_from && id_to) { *id_to = (Z_ReferenceId*) odr_malloc (odr, sizeof(**id_to)); @@ -244,7 +293,7 @@ Z_APDU *yp2::util::create_APDU(ODR odr, int type, Z_APDU *in_apdu) return out_apdu; } -Z_APDU *yp2::odr::create_initResponse(Z_APDU *in_apdu, +Z_APDU *mp::odr::create_initResponse(Z_APDU *in_apdu, int error, const char *addinfo) { Z_APDU *apdu = create_APDU(Z_APDU_initResponse, in_apdu); @@ -257,7 +306,7 @@ Z_APDU *yp2::odr::create_initResponse(Z_APDU *in_apdu, return apdu; } -Z_APDU *yp2::odr::create_searchResponse(Z_APDU *in_apdu, +Z_APDU *mp::odr::create_searchResponse(Z_APDU *in_apdu, int error, const char *addinfo) { Z_APDU *apdu = create_APDU(Z_APDU_searchResponse, in_apdu); @@ -274,7 +323,7 @@ Z_APDU *yp2::odr::create_searchResponse(Z_APDU *in_apdu, return apdu; } -Z_APDU *yp2::odr::create_presentResponse(Z_APDU *in_apdu, +Z_APDU *mp::odr::create_presentResponse(Z_APDU *in_apdu, int error, const char *addinfo) { Z_APDU *apdu = create_APDU(Z_APDU_presentResponse, in_apdu); @@ -291,7 +340,7 @@ Z_APDU *yp2::odr::create_presentResponse(Z_APDU *in_apdu, return apdu; } -Z_APDU *yp2::odr::create_scanResponse(Z_APDU *in_apdu, +Z_APDU *mp::odr::create_scanResponse(Z_APDU *in_apdu, int error, const char *addinfo) { Z_APDU *apdu = create_APDU(Z_APDU_scanResponse, in_apdu); @@ -318,7 +367,7 @@ Z_APDU *yp2::odr::create_scanResponse(Z_APDU *in_apdu, return apdu; } -Z_GDU *yp2::odr::create_HTTP_Response(yp2::Session &session, +Z_GDU *mp::odr::create_HTTP_Response(mp::Session &session, Z_HTTP_Request *hreq, int code) { const char *response_version = "1.0"; @@ -351,7 +400,7 @@ Z_GDU *yp2::odr::create_HTTP_Response(yp2::Session &session, return gdu; } -Z_ReferenceId **yp2::util::get_referenceId(Z_APDU *apdu) +Z_ReferenceId **mp::util::get_referenceId(Z_APDU *apdu) { switch (apdu->which) {