Added utility yp2::util::set_vhost_otherinfo to put vhost
authorAdam Dickmeiss <adam@indexdata.dk>
Wed, 18 Jan 2006 10:57:27 +0000 (10:57 +0000)
committerAdam Dickmeiss <adam@indexdata.dk>
Wed, 18 Jan 2006 10:57:27 +0000 (10:57 +0000)
stuff in other-information unit.

src/filter_multi.cpp
src/filter_virt_db.cpp
src/util.cpp
src/util.hpp

index 7e847d4..6866f3d 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: filter_multi.cpp,v 1.7 2006-01-18 09:20:30 adam Exp $
+/* $Id: filter_multi.cpp,v 1.8 2006-01-18 10:57:27 adam Exp $
    Copyright (c) 2005, Index Data.
 
 %LICENSE%
@@ -317,9 +317,11 @@ void yf::Multi::Frontend::init(Package &package, Z_GDU *gdu)
         BackendPtr b = *bit;
         Z_APDU *init_apdu = zget_APDU(odr, Z_APDU_initRequest);
         
-        yaz_oi_set_string_oidval(&init_apdu->u.initRequest->otherInfo, odr,
-                                 VAL_PROXY, 1, b->m_vhost.c_str());
-        
+        std::list<std::string>vhost_one;
+        vhost_one.push_back(b->m_vhost);
+        yp2::util::set_vhost_otherinfo(&init_apdu->u.initRequest->otherInfo,
+                                       odr, vhost_one);
+
         Z_InitRequest *req = init_apdu->u.initRequest;
         
         ODR_MASK_SET(req->options, Z_Options_search);
index 1fae37a..98ed55a 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: filter_virt_db.cpp,v 1.32 2006-01-18 10:30:28 adam Exp $
+/* $Id: filter_virt_db.cpp,v 1.33 2006-01-18 10:57:27 adam Exp $
    Copyright (c) 2005, Index Data.
 
 %LICENSE%
@@ -174,14 +174,8 @@ yf::Virt_db::BackendPtr yf::Virt_db::Frontend::init_backend(
 
     Z_APDU *init_apdu = zget_APDU(odr, Z_APDU_initRequest);
 
-    std::list<std::string>::const_iterator t_it = b->m_targets.begin();
-    int cat = 1;
-    for (; t_it != b->m_targets.end(); t_it++, cat++)
-    {
-        yaz_oi_set_string_oidval(&init_apdu->u.initRequest->otherInfo, odr,
-                                 VAL_PROXY, cat, t_it->c_str());
-    }
-        
+    yp2::util::set_vhost_otherinfo(&init_apdu->u.initRequest->otherInfo, odr,
+                                   b->m_targets);
     Z_InitRequest *req = init_apdu->u.initRequest;
 
     // copy stuff from Frontend Init Request
@@ -606,9 +600,9 @@ void yf::Virt_db::process(Package &package) const
     {
         Z_InitRequest *req = gdu->u.z3950->u.initRequest;
         
-        const char *vhost =
-            yaz_oi_get_string_oidval(&req->otherInfo, VAL_PROXY, 1, 0);
-        if (!vhost)
+        std::list<std::string> vhosts;
+        yp2::util::get_vhost_otherinfo(&req->otherInfo, false, vhosts);
+        if (vhosts.size() == 0)
         {
             f->m_init_gdu = gdu;
             
index 15aa7ae..dd80df0 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: util.cpp,v 1.9 2006-01-17 17:55:40 adam Exp $
+/* $Id: util.cpp,v 1.10 2006-01-18 10:57:27 adam Exp $
    Copyright (c) 2005, Index Data.
 
 %LICENSE%
@@ -124,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)
 {
index 3ee0249..c905304 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: util.hpp,v 1.8 2006-01-17 17:55:40 adam Exp $
+/* $Id: util.hpp,v 1.9 2006-01-18 10:57:27 adam Exp $
    Copyright (c) 2005, Index Data.
 
 %LICENSE%
@@ -26,6 +26,9 @@ namespace yp2 {
         int get_vhost_otherinfo(Z_OtherInformation **otherInformation,
                                 bool remove_flag,
                                 std::list<std::string> &vhosts);
+        void set_vhost_otherinfo(Z_OtherInformation **otherInformation,
+                                 ODR odr,
+                                 const std::list<std::string> &vhosts);
         void get_init_diagnostics(Z_InitResponse *res,
                                   int &error_code, std::string &addinfo);
         void get_default_diag(Z_DefaultDiagFormat *r,