Filter sru_z3950 now handles x-target=host . The value (host) is
the address of a target (vhost). The vhost can be used by, for
example, z3950_client to connect to any Z39.50 server. Note that
at this stage the database is NOT set by the x-target. This must
also be done in order for this feature to be useful.
-<!-- $Id: config-sru-to-z3950.xml,v 1.21 2007-12-16 22:22:49 adam Exp $ -->
+<!-- $Id: config-sru-to-z3950.xml,v 1.22 2008-01-29 16:51:12 adam Exp $ -->
<metaproxy
xmlns="http://indexdata.com/metaproxy"
version="1.0">
<metaproxy
xmlns="http://indexdata.com/metaproxy"
version="1.0">
+ <filter type="session_shared"/>
+ <filter type="z3950_client">
+ <timeout>30</timeout>
+ </filter>
<filter type="bounce"/>
</route>
</routes>
<filter type="bounce"/>
</route>
</routes>
-/* $Id: filter_load_balance.cpp,v 1.8 2007-05-09 21:23:09 adam Exp $
+/* $Id: filter_load_balance.cpp,v 1.9 2008-01-29 16:51:12 adam Exp $
Copyright (c) 2005-2007, Index Data.
This file is part of Metaproxy.
Copyright (c) 2005-2007, Index Data.
This file is part of Metaproxy.
// copying new target into init package
mp::util::set_vhost_otherinfo(&(org_init->otherInfo),
// copying new target into init package
mp::util::set_vhost_otherinfo(&(org_init->otherInfo),
package.request() = gdu_req;
}
package.request() = gdu_req;
}
-/* $Id: filter_sru_to_z3950.cpp,v 1.35 2007-05-09 21:23:09 adam Exp $
+/* $Id: filter_sru_to_z3950.cpp,v 1.36 2008-01-29 16:51:12 adam Exp $
Copyright (c) 2005-2007, Index Data.
This file is part of Metaproxy.
Copyright (c) 2005-2007, Index Data.
This file is part of Metaproxy.
bool z3950_init_request(mp::Package &package,
mp::odr &odr_en,
bool z3950_init_request(mp::Package &package,
mp::odr &odr_en,
- Z_SRW_PDU *sru_pdu_res,
- const std::string
- &database = "Default") const;
+ Z_SRW_PDU *sru_pdu_req,
+ Z_SRW_PDU *sru_pdu_res) const;
bool z3950_close_request(mp::Package &package) const;
bool z3950_close_request(mp::Package &package) const;
- bool z3950_search_request(mp::Package &package,
- mp::odr &odr_en,
- Z_SRW_PDU *sru_pdu_res,
- Z_SRW_searchRetrieveRequest
- const *sr_req) const;
+ bool z3950_search_request(
+ mp::Package &package,
+ mp::odr &odr_en,
+ Z_SRW_PDU *sru_pdu_res,
+ Z_SRW_searchRetrieveRequest const *sr_req) const;
- bool z3950_present_request(mp::Package &package,
- mp::odr &odr_en,
- Z_SRW_PDU *sru_pdu_res,
- Z_SRW_searchRetrieveRequest
- const *sr_req) const;
+ bool z3950_present_request(
+ mp::Package &package,
+ mp::odr &odr_en,
+ Z_SRW_PDU *sru_pdu_res,
+ Z_SRW_searchRetrieveRequest const *sr_req) const;
bool z3950_scan_request(mp::Package &package,
mp::odr &odr_en,
bool z3950_scan_request(mp::Package &package,
mp::odr &odr_en,
ok = mp_util::check_sru_query_exists(package, odr_en,
sru_pdu_res, sr_req);
ok = mp_util::check_sru_query_exists(package, odr_en,
sru_pdu_res, sr_req);
- if (ok && z3950_init_request(package, odr_en, sru_pdu_res))
+ if (ok && z3950_init_request(package, odr_en, sru_pdu_req, sru_pdu_res))
{
{
ok = z3950_search_request(package, odr_en,
{
{
ok = z3950_search_request(package, odr_en,
4, "scan");
// to be used when we do scan
4, "scan");
// to be used when we do scan
- if (false && z3950_init_request(package, odr_en, sru_pdu_res))
+ if (false && z3950_init_request(package, odr_en, sru_pdu_req,
+ sru_pdu_res))
{
z3950_scan_request(package, odr_en, sru_pdu_res, sr_req);
z3950_close_request(package);
{
z3950_scan_request(package, odr_en, sru_pdu_res, sr_req);
z3950_close_request(package);
bool
yf::SRUtoZ3950::Impl::z3950_init_request(mp::Package &package,
mp::odr &odr_en,
bool
yf::SRUtoZ3950::Impl::z3950_init_request(mp::Package &package,
mp::odr &odr_en,
- Z_SRW_PDU *sru_pdu_res,
- const std::string &database) const
+ Z_SRW_PDU *sru_pdu_req,
+ Z_SRW_PDU *sru_pdu_res) const
{
// prepare Z3950 package
Package z3950_package(package.session(), package.origin());
{
// prepare Z3950 package
Package z3950_package(package.session(), package.origin());
ODR_MASK_SET(init_req->protocolVersion, Z_ProtocolVersion_2);
ODR_MASK_SET(init_req->protocolVersion, Z_ProtocolVersion_3);
ODR_MASK_SET(init_req->protocolVersion, Z_ProtocolVersion_2);
ODR_MASK_SET(init_req->protocolVersion, Z_ProtocolVersion_3);
+ Z_SRW_extra_arg *arg;
+ for ( arg = sru_pdu_req->extra_args; arg; arg = arg->next)
+ if (!strcmp(arg->name, "x-target"))
+ {
+ std::string target(arg->value);
+ mp_util::set_vhost_otherinfo(&init_req->otherInfo,
+ odr_en, target, 1);
+
+ }
+
z3950_package.request() = apdu;
// send Z3950 package
z3950_package.request() = apdu;
// send Z3950 package
-/* $Id: util.hpp,v 1.25 2007-05-09 21:23:09 adam Exp $
+/* $Id: util.hpp,v 1.26 2008-01-29 16:51:12 adam Exp $
Copyright (c) 2005-2007, Index Data.
This file is part of Metaproxy.
Copyright (c) 2005-2007, Index Data.
This file is part of Metaproxy.
void set_vhost_otherinfo(Z_OtherInformation **otherInformation,
ODR odr,
const std::string vhost,
void set_vhost_otherinfo(Z_OtherInformation **otherInformation,
ODR odr,
const std::string vhost,
void set_vhost_otherinfo(Z_OtherInformation **otherInformation,
ODR odr,
void set_vhost_otherinfo(Z_OtherInformation **otherInformation,
ODR odr,