for (dbnode = confignode->children; dbnode; dbnode = dbnode->next)
{
if (dbnode->type != XML_ELEMENT_NODE)
continue;
for (dbnode = confignode->children; dbnode; dbnode = dbnode->next)
{
if (dbnode->type != XML_ELEMENT_NODE)
continue;
mp::xml::check_attribute(attr, "", "name");
database = mp::xml::get_text(attr);
mp::xml::check_attribute(attr, "", "name");
database = mp::xml::get_text(attr);
- if (! (sru_pdu_req = mp_util::decode_sru_request(package, odr_de, odr_en,
+ if (! (sru_pdu_req = mp_util::decode_sru_request(package, odr_de, odr_en,
- mp_util::build_sru_explain(package, odr_en, sru_pdu_res,
+ mp_util::build_sru_explain(package, odr_en, sru_pdu_res,
- mp_util::build_sru_response(package, odr_en, soap,
+ mp_util::build_sru_response(package, odr_en, soap,
zgdu_req->u.HTTP_Request, 400);
package.response() = zgdu_res;
}
return;
}
zgdu_req->u.HTTP_Request, 400);
package.response() = zgdu_res;
}
return;
}
if (sru_pdu_req->which == Z_SRW_explain_request)
{
Z_SRW_explainRequest *er_req = sru_pdu_req->u.explain_request;
if (sru_pdu_req->which == Z_SRW_explain_request)
{
Z_SRW_explainRequest *er_req = sru_pdu_req->u.explain_request;
- mp_util::build_sru_explain(package, odr_en, sru_pdu_res,
+ mp_util::build_sru_explain(package, odr_en, sru_pdu_res,
sruinfo, explainnode, er_req);
}
else if (sru_pdu_req->which == Z_SRW_searchRetrieve_request
&& sru_pdu_req->u.request)
{ // searchRetrieve
sruinfo, explainnode, er_req);
}
else if (sru_pdu_req->which == Z_SRW_searchRetrieve_request
&& sru_pdu_req->u.request)
{ // searchRetrieve
sru_pdu_res = yaz_srw_get_pdu(odr_en, Z_SRW_searchRetrieve_response,
sru_pdu_req->srw_version);
// checking that we have a query
sru_pdu_res = yaz_srw_get_pdu(odr_en, Z_SRW_searchRetrieve_response,
sru_pdu_req->srw_version);
// checking that we have a query
{
ok = z3950_search_request(package, odr_en,
sru_pdu_res, sr_req, zurl);
{
ok = z3950_search_request(package, odr_en,
sru_pdu_res, sr_req, zurl);
{
sru_pdu_res = yaz_srw_get_pdu(odr_en, Z_SRW_scan_response,
sru_pdu_req->srw_version);
{
sru_pdu_res = yaz_srw_get_pdu(odr_en, Z_SRW_scan_response,
sru_pdu_req->srw_version);
// we do not do scan at the moment, therefore issuing a diagnostic
yaz_add_srw_diagnostic(odr_en,
// we do not do scan at the moment, therefore issuing a diagnostic
yaz_add_srw_diagnostic(odr_en,
- &(sru_pdu_res->u.scan_response->diagnostics),
- &(sru_pdu_res->u.scan_response->num_diagnostics),
+ &(sru_pdu_res->u.scan_response->diagnostics),
+ &(sru_pdu_res->u.scan_response->num_diagnostics),
YAZ_SRW_UNSUPP_OPERATION, "scan");
}
else
{
sru_pdu_res = yaz_srw_get(odr_en, Z_SRW_explain_response);
YAZ_SRW_UNSUPP_OPERATION, "scan");
}
else
{
sru_pdu_res = yaz_srw_get(odr_en, Z_SRW_explain_response);
- &(sru_pdu_res->u.explain_response->diagnostics),
- &(sru_pdu_res->u.explain_response->num_diagnostics),
+ &(sru_pdu_res->u.explain_response->diagnostics),
+ &(sru_pdu_res->u.explain_response->num_diagnostics),
wrbuf_puts(w, "<log>\n");
wrbuf_xmlputs(w, l.c_str());
wrbuf_puts(w, "</log>");
wrbuf_puts(w, "<log>\n");
wrbuf_xmlputs(w, l.c_str());
wrbuf_puts(w, "</log>");
sru_pdu_res->extraResponseData_len = w.len();
sru_pdu_res->extraResponseData_buf =
odr_strdup(odr_en, wrbuf_cstr(w));
}
}
sru_pdu_res->extraResponseData_len = w.len();
sru_pdu_res->extraResponseData_buf =
odr_strdup(odr_en, wrbuf_cstr(w));
}
}
- mp_util::build_sru_response(package, odr_en, soap,
+ mp_util::build_sru_response(package, odr_en, soap,
boost::mutex::scoped_lock lock(m_mutex_session);
std::map<mp::Session,yf::SRUtoZ3950::FrontendPtr>::iterator it;
boost::mutex::scoped_lock lock(m_mutex_session);
std::map<mp::Session,yf::SRUtoZ3950::FrontendPtr>::iterator it;
{
boost::mutex::scoped_lock lock(m_mutex_session);
std::map<mp::Session,FrontendPtr>::iterator it;
{
boost::mutex::scoped_lock lock(m_mutex_session);
std::map<mp::Session,FrontendPtr>::iterator it;
ODR_MASK_SET(init_req->options, Z_Options_search);
ODR_MASK_SET(init_req->options, Z_Options_present);
ODR_MASK_SET(init_req->options, Z_Options_namedResultSets);
ODR_MASK_SET(init_req->options, Z_Options_search);
ODR_MASK_SET(init_req->options, Z_Options_present);
ODR_MASK_SET(init_req->options, Z_Options_namedResultSets);
std::string host;
std::list<std::string> dblist;
mp_util::split_zurl(zurl, host, dblist);
std::string host;
std::list<std::string> dblist;
mp_util::split_zurl(zurl, host, dblist);
- if (z3950_gdu && z3950_gdu->which == Z_GDU_Z3950
- && z3950_gdu->u.z3950->which == Z_APDU_initResponse
+ if (z3950_gdu && z3950_gdu->which == Z_GDU_Z3950
+ && z3950_gdu->u.z3950->which == Z_APDU_initResponse
yaz_add_srw_diagnostic(odr_en,
&(sru_pdu_res->u.response->diagnostics),
&(sru_pdu_res->u.response->num_diagnostics),
yaz_add_srw_diagnostic(odr_en,
&(sru_pdu_res->u.response->diagnostics),
&(sru_pdu_res->u.response->num_diagnostics),
= odr_strdup(odr_en, "Default");
}
Z_Query *z_query = (Z_Query *) odr_malloc(odr_en, sizeof(Z_Query));
z_searchRequest->query = z_query;
= odr_strdup(odr_en, "Default");
}
Z_Query *z_query = (Z_Query *) odr_malloc(odr_en, sizeof(Z_Query));
z_searchRequest->query = z_query;
- &(sru_pdu_res->u.response->diagnostics),
- &(sru_pdu_res->u.response->num_diagnostics),
+ &(sru_pdu_res->u.response->diagnostics),
+ &(sru_pdu_res->u.response->num_diagnostics),
|| z3950_gdu->u.z3950->which != Z_APDU_searchResponse
|| !z3950_gdu->u.z3950->u.searchResponse
|| !z3950_gdu->u.z3950->u.searchResponse->searchStatus)
|| z3950_gdu->u.z3950->which != Z_APDU_searchResponse
|| !z3950_gdu->u.z3950->u.searchResponse
|| !z3950_gdu->u.z3950->u.searchResponse->searchStatus)
{
send_z3950_present = false;
yaz_add_srw_diagnostic(odr_en,
{
send_z3950_present = false;
yaz_add_srw_diagnostic(odr_en,
- &(sru_pdu_res->u.response->diagnostics),
- &(sru_pdu_res->u.response->num_diagnostics),
+ &(sru_pdu_res->u.response->diagnostics),
+ &(sru_pdu_res->u.response->num_diagnostics),
// resultSetTTL unsupported.
// resultSetIdleTime in response
if (sr_req->resultSetTTL)
{
send_z3950_present = false;
yaz_add_srw_diagnostic(odr_en,
// resultSetTTL unsupported.
// resultSetIdleTime in response
if (sr_req->resultSetTTL)
{
send_z3950_present = false;
yaz_add_srw_diagnostic(odr_en,
- &(sru_pdu_res->u.response->diagnostics),
- &(sru_pdu_res->u.response->num_diagnostics),
+ &(sru_pdu_res->u.response->diagnostics),
+ &(sru_pdu_res->u.response->num_diagnostics),
// sort unsupported
if (sr_req->sort_type != Z_SRW_sort_type_none)
{
send_z3950_present = false;
yaz_add_srw_diagnostic(odr_en,
// sort unsupported
if (sr_req->sort_type != Z_SRW_sort_type_none)
{
send_z3950_present = false;
yaz_add_srw_diagnostic(odr_en,
- &(sru_pdu_res->u.response->diagnostics),
- &(sru_pdu_res->u.response->num_diagnostics),
+ &(sru_pdu_res->u.response->diagnostics),
+ &(sru_pdu_res->u.response->num_diagnostics),
// start record requested negative, or larger than number of records
if (start < 0 || start > *sru_pdu_res->u.response->numberOfRecords)
{
send_z3950_present = false;
yaz_add_srw_diagnostic(odr_en,
// start record requested negative, or larger than number of records
if (start < 0 || start > *sru_pdu_res->u.response->numberOfRecords)
{
send_z3950_present = false;
yaz_add_srw_diagnostic(odr_en,
- &(sru_pdu_res->u.response->diagnostics),
- &(sru_pdu_res->u.response->num_diagnostics),
+ &(sru_pdu_res->u.response->diagnostics),
+ &(sru_pdu_res->u.response->num_diagnostics),
// maximumRecords requested negative
if (max_recs < 0)
{
send_z3950_present = false;
yaz_add_srw_diagnostic(odr_en,
// maximumRecords requested negative
if (max_recs < 0)
{
send_z3950_present = false;
yaz_add_srw_diagnostic(odr_en,
- &(sru_pdu_res->u.response->diagnostics),
- &(sru_pdu_res->u.response->num_diagnostics),
+ &(sru_pdu_res->u.response->diagnostics),
+ &(sru_pdu_res->u.response->num_diagnostics),
if (max_recs > *sru_pdu_res->u.response->numberOfRecords - start)
max_recs = *sru_pdu_res->u.response->numberOfRecords - start + 1;
if (max_recs > *sru_pdu_res->u.response->numberOfRecords - start)
max_recs = *sru_pdu_res->u.response->numberOfRecords - start + 1;
{
// now packaging the z3950 present request
Package z3950_package(package.session(), package.origin());
{
// now packaging the z3950 present request
Package z3950_package(package.session(), package.origin());
*apdu->u.presentRequest->resultSetStartPoint = start + num;
*apdu->u.presentRequest->numberOfRecordsRequested = max_recs - num;
*apdu->u.presentRequest->resultSetStartPoint = start + num;
*apdu->u.presentRequest->numberOfRecordsRequested = max_recs - num;
// set response packing to be same as "request" packing..
int record_packing = Z_SRW_recordPacking_XML;
if (sr_req->recordPacking && 's' == *(sr_req->recordPacking))
record_packing = Z_SRW_recordPacking_string;
// set response packing to be same as "request" packing..
int record_packing = Z_SRW_recordPacking_XML;
if (sr_req->recordPacking && 's' == *(sr_req->recordPacking))
record_packing = Z_SRW_recordPacking_string;
// RecordSyntax will always be XML
apdu->u.presentRequest->preferredRecordSyntax
= odr_oiddup(odr_en, yaz_oid_recsyn_xml);
// RecordSyntax will always be XML
apdu->u.presentRequest->preferredRecordSyntax
= odr_oiddup(odr_en, yaz_oid_recsyn_xml);
- &(sru_pdu_res->u.response->diagnostics),
- &(sru_pdu_res->u.response->num_diagnostics),
+ &(sru_pdu_res->u.response->diagnostics),
+ &(sru_pdu_res->u.response->num_diagnostics),
YAZ_SRW_SYSTEM_TEMPORARILY_UNAVAILABLE, 0);
return false;
}
// everything fine, continuing
YAZ_SRW_SYSTEM_TEMPORARILY_UNAVAILABLE, 0);
return false;
}
// everything fine, continuing
// if anything but database or surrogate diagnostics, stop
if (!pr->records || pr->records->which != Z_Records_DBOSD)
break;
// if anything but database or surrogate diagnostics, stop
if (!pr->records || pr->records->which != Z_Records_DBOSD)
break;
for (int i = 0; i < returned_recs; i++)
{
int position = i + *apdu->u.presentRequest->resultSetStartPoint;
for (int i = 0; i < returned_recs; i++)
{
int position = i + *apdu->u.presentRequest->resultSetStartPoint;
&& !oid_oidcmp(npr->u.databaseRecord->direct_reference,
yaz_oid_recsyn_xml))
{
// got XML record back
Z_External *r = npr->u.databaseRecord;
&& !oid_oidcmp(npr->u.databaseRecord->direct_reference,
yaz_oid_recsyn_xml))
{
// got XML record back
Z_External *r = npr->u.databaseRecord;
odr_intdup(odr_en, position);
sru_res->records[i + num].recordSchema = sr_req->recordSchema;
sru_res->records[i + num].recordData_buf
odr_intdup(odr_en, position);
sru_res->records[i + num].recordSchema = sr_req->recordSchema;
sru_res->records[i + num].recordData_buf
odr_getoidbystr(odr_en, "1.2.840.10003.16.2");
ext->indirect_reference = 0;
ext->descriptor = 0;
ext->which = Z_External_CQL;
ext->u.cql = odr_strdup(odr_en, req->query.cql);
odr_getoidbystr(odr_en, "1.2.840.10003.16.2");
ext->indirect_reference = 0;
ext->descriptor = 0;
ext->which = Z_External_CQL;
ext->u.cql = odr_strdup(odr_en, req->query.cql);
RPNquery = yaz_pqf_parse (pqf_parser, odr_en, req->query.pqf);
yaz_pqf_destroy(pqf_parser);
RPNquery = yaz_pqf_parse (pqf_parser, odr_en, req->query.pqf);
yaz_pqf_destroy(pqf_parser);
return 0;
}
return YAZ_SRW_MANDATORY_PARAMETER_NOT_SUPPLIED;
}
bool yf::SRUtoZ3950::Impl::z3950_to_srw_diagnostics_ok(
return 0;
}
return YAZ_SRW_MANDATORY_PARAMETER_NOT_SUPPLIED;
}
bool yf::SRUtoZ3950::Impl::z3950_to_srw_diagnostics_ok(
Z_SRW_searchRetrieveResponse *sru_res,
Z_DefaultDiagFormat *ddf) const
{
Z_SRW_searchRetrieveResponse *sru_res,
Z_DefaultDiagFormat *ddf) const
{
sru_res->diagnostics = (Z_SRW_diagnostic *)
odr_malloc(odr_en, sizeof(*sru_res->diagnostics));
yaz_mk_std_diagnostic(odr_en, sru_res->diagnostics,
sru_res->diagnostics = (Z_SRW_diagnostic *)
odr_malloc(odr_en, sizeof(*sru_res->diagnostics));
yaz_mk_std_diagnostic(odr_en, sru_res->diagnostics,