metaproxy  1.3.55
Classes | Functions
metaproxy_1::util Namespace Reference

Classes

class  SRUServerInfo

Functions

bool build_sru_debug_package (metaproxy_1::Package &package)
SRUServerInfo get_sru_server_info (metaproxy_1::Package &package)
bool build_sru_explain (metaproxy_1::Package &package, metaproxy_1::odr &odr_en, Z_SRW_PDU *sru_pdu_res, SRUServerInfo sruinfo, const xmlNode *explain=0, Z_SRW_explainRequest const *er_req=0)
bool build_sru_response (metaproxy_1::Package &package, metaproxy_1::odr &odr_en, Z_SOAP *soap, const Z_SRW_PDU *sru_pdu_res, char *charset, const char *stylesheet)
Z_SRW_PDU * decode_sru_request (metaproxy_1::Package &package, metaproxy_1::odr &odr_de, metaproxy_1::odr &odr_en, Z_SRW_PDU *sru_pdu_res, Z_SOAP **soap, char *charset, char *stylesheet)
bool check_sru_query_exists (metaproxy_1::Package &package, metaproxy_1::odr &odr_en, Z_SRW_PDU *sru_pdu_res, Z_SRW_searchRetrieveRequest const *sr_req)
Z_ElementSetNames * build_esn_from_schema (metaproxy_1::odr &odr_en, const char *schema)

Function Documentation

Z_ElementSetNames* metaproxy_1::util::build_esn_from_schema ( metaproxy_1::odr &  odr_en,
const char *  schema 
)
bool metaproxy_1::util::build_sru_debug_package ( metaproxy_1::Package &  package)
bool metaproxy_1::util::build_sru_explain ( metaproxy_1::Package &  package,
metaproxy_1::odr &  odr_en,
Z_SRW_PDU *  sru_pdu_res,
SRUServerInfo  sruinfo,
const xmlNode *  explain = 0,
Z_SRW_explainRequest const *  er_req = 0 
)

Definition at line 94 of file sru_util.cpp.

References metaproxy_1::util::SRUServerInfo::database, metaproxy_1::util::SRUServerInfo::host, metaproxy_1::util::SRUServerInfo::port, and xmlns_explain().

{
// building SRU explain record
std::string explain_xml;
if (explain == 0)
{
explain_xml
= mp_util::to_string(
"<explain xmlns=\"" + xmlns_explain + "\">\n"
" <serverInfo protocol='SRU'>\n"
" <host>")
+ sruinfo.host
+ mp_util::to_string("</host>\n"
" <port>")
+ sruinfo.port
+ mp_util::to_string("</port>\n"
" <database>")
+ sruinfo.database
+ mp_util::to_string("</database>\n"
" </serverInfo>\n"
"</explain>\n");
}
else
{
// make new XML DOC with given explain node
xmlDocPtr doc = xmlNewDoc(BAD_CAST "1.0");
xmlDocSetRootElement(doc, (xmlNode*)explain);
xmlChar *xmlbuff;
int xmlbuffsz;
xmlDocDumpFormatMemory(doc, &xmlbuff, &xmlbuffsz, 1);
explain_xml.assign((const char*)xmlbuff, 0, xmlbuffsz);
}
// z3950'fy recordPacking
int record_packing = Z_SRW_recordPacking_XML;
if (er_req && er_req->recordPacking && 's' == *(er_req->recordPacking))
record_packing = Z_SRW_recordPacking_string;
// preparing explain record insert
Z_SRW_explainResponse *sru_res = sru_pdu_res->u.explain_response;
// inserting one and only explain record
sru_res->record.recordPosition = odr_intdup(odr_en, 1);
sru_res->record.recordPacking = record_packing;
sru_res->record.recordSchema = (char *)xmlns_explain.c_str();
sru_res->record.recordData_len = 1 + explain_xml.size();
sru_res->record.recordData_buf
= odr_strdupn(odr_en, (const char *)explain_xml.c_str(),
1 + explain_xml.size());
return true;
}

Here is the call graph for this function:

bool metaproxy_1::util::build_sru_response ( metaproxy_1::Package &  package,
metaproxy_1::odr &  odr_en,
Z_SOAP *  soap,
const Z_SRW_PDU *  sru_pdu_res,
char *  charset,
const char *  stylesheet 
)
bool metaproxy_1::util::check_sru_query_exists ( metaproxy_1::Package &  package,
metaproxy_1::odr &  odr_en,
Z_SRW_PDU *  sru_pdu_res,
Z_SRW_searchRetrieveRequest const *  sr_req 
)
Z_SRW_PDU* metaproxy_1::util::decode_sru_request ( metaproxy_1::Package &  package,
metaproxy_1::odr &  odr_de,
metaproxy_1::odr &  odr_en,
Z_SRW_PDU *  sru_pdu_res,
Z_SOAP **  soap,
char *  charset,
char *  stylesheet 
)
SRUServerInfo metaproxy_1::util::get_sru_server_info ( metaproxy_1::Package &  package)