-/* $Id: util.cpp,v 1.8 2006-01-17 16:56:48 adam Exp $
+/* $Id: util.cpp,v 1.11 2006-01-18 14:10:47 adam Exp $
Copyright (c) 2005, Index Data.
%LICENSE%
#include <yaz/otherinfo.h>
#include "util.hpp"
+void yp2::util::piggyback(int smallSetUpperBound,
+ int largeSetLowerBound,
+ int mediumSetPresentNumber,
+ int result_set_size,
+ int &number_to_present)
+{
+ // deal with piggyback
+
+ if (result_set_size < smallSetUpperBound)
+ {
+ // small set . Return all records in set
+ number_to_present = result_set_size;
+ }
+ else if (result_set_size > largeSetLowerBound)
+ {
+ // large set . Return no records
+ number_to_present = 0;
+ }
+ else
+ {
+ // medium set . Return mediumSetPresentNumber records
+ number_to_present = mediumSetPresentNumber;
+ if (number_to_present > result_set_size)
+ number_to_present = result_set_size;
+ }
+}
bool yp2::util::pqf(ODR odr, Z_APDU *apdu, const std::string &q) {
YAZ_PQF_Parser pqf_parser = yaz_pqf_create();
return cat;
}
+void yp2::util::set_vhost_otherinfo(Z_OtherInformation **otherInformation,
+ ODR odr,
+ const std::list<std::string> &vhosts)
+{
+ int cat;
+ std::list<std::string>::const_iterator it = vhosts.begin();
+ for (cat = 1; it != vhosts.end() ; cat++, it++)
+ {
+ yaz_oi_set_string_oidval(otherInformation, odr,
+ VAL_PROXY, cat, it->c_str());
+ }
+}
+
void yp2::util::split_zurl(std::string zurl, std::string &host,
std::list<std::string> &db)
{
{
Z_Records *rec = (Z_Records *) odr_malloc(m_odr, sizeof(Z_Records));
apdu->u.presentResponse->records = rec;
+
rec->which = Z_Records_NSD;
rec->u.nonSurrogateDiagnostic =
zget_DefaultDiagFormat(m_odr, error, addinfo);
int error, const char *addinfo)
{
Z_APDU *apdu = create_APDU(Z_APDU_scanResponse, in_apdu);
+ Z_ScanResponse *res = apdu->u.scanResponse;
+ res->entries = (Z_ListEntries *) odr_malloc(m_odr, sizeof(*res->entries));
+ res->entries->num_entries = 0;
+ res->entries->entries = 0;
+
if (error)
{
- Z_ScanResponse *res = apdu->u.scanResponse;
- res->entries = (Z_ListEntries *) odr_malloc(m_odr, sizeof(*res->entries));
*res->scanStatus = Z_Scan_failure;
- res->entries->num_entries = 0;
- res->entries->entries = 0;
res->entries->num_nonsurrogateDiagnostics = 1;
res->entries->nonsurrogateDiagnostics = (Z_DiagRec **)
odr_malloc(m_odr, sizeof(Z_DiagRec *));
res->entries->nonsurrogateDiagnostics[0] =
zget_DiagRec(m_odr, error, addinfo);
}
+ else
+ {
+ res->entries->num_nonsurrogateDiagnostics = 0;
+ res->entries->nonsurrogateDiagnostics = 0;
+ }
return apdu;
}