Added utility yp2::util::set_vhost_otherinfo to put vhost
[metaproxy-moved-to-github.git] / src / util.cpp
index 38fd9e2..dd80df0 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: util.cpp,v 1.8 2006-01-17 16:56:48 adam Exp $
+/* $Id: util.cpp,v 1.10 2006-01-18 10:57:27 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();
@@ -98,6 +124,19 @@ int yp2::util::get_vhost_otherinfo(Z_OtherInformation **otherInformation,
     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)
 {