+ // setting up variables for conversion state
+ yaz_record_conv_t rc = 0;
+ int ret_code;
+
+ const char *input_schema = 0;
+ Odr_oid *input_syntax = 0;
+
+ if(pr_req->recordComposition){
+ input_schema
+ = mp_util::record_composition_to_esn(pr_req->recordComposition);
+ }
+ if(pr_req->preferredRecordSyntax){
+ input_syntax = pr_req->preferredRecordSyntax;
+ }
+
+ const char *match_schema = 0;
+ int *match_syntax = 0;
+
+ const char *backend_schema = 0;
+ Odr_oid *backend_syntax = 0;
+
+ ret_code
+ = yaz_retrieval_request(m_retrieval,
+ input_schema, input_syntax,
+ &match_schema, &match_syntax,
+ &rc,
+ &backend_schema, &backend_syntax);
+
+ // debug output - to be removed later
+ std::cout << "ret_code " << ret_code << "\n";
+ std::cout << "input " << input_syntax << " ";
+ if (input_syntax)
+ std::cout << (oid_getentbyoid(input_syntax))->desc << " ";
+ else
+ std::cout << "- ";
+ if (input_schema)
+ std::cout << input_schema << "\n";
+ else
+ std::cout << "-\n";
+ std::cout << "match " << match_syntax << " ";
+ if (match_syntax)
+ std::cout << (oid_getentbyoid(match_syntax))->desc << " ";
+ else
+ std::cout << "- ";
+ if (match_schema)
+ std::cout << match_schema << "\n";
+ else
+ std::cout << "-\n";
+ std::cout << "backend " << backend_syntax << " ";
+ if (backend_syntax)
+ std::cout << (oid_getentbyoid(backend_syntax))->desc << " ";
+ else
+ std::cout << "- ";
+ if (backend_schema)
+ std::cout << backend_schema << "\n";
+ else
+ std::cout << "-\n";
+
+ // error handeling
+ if (ret_code != 0)
+ {
+
+ // need to construct present error package and send back
+
+ const char *details = 0;
+ if (ret_code == -1) /* error ? */
+ {
+ details = yaz_retrieval_get_error(m_retrieval);
+ std::cout << "ERROR: YAZ_BIB1_SYSTEM_ERROR_IN_PRESENTING_RECORDS "
+ << details << "\n";
+ //rr->errcode = YAZ_BIB1_SYSTEM_ERROR_IN_PRESENTING_RECORDS;
+ // if (details)
+ // rr->errstring = odr_strdup(rr->stream, details);
+ }
+ else if (ret_code == 1 || ret_code == 3)
+ {
+ details = input_schema;
+ std::cout << "ERROR: YAZ_BIB1_ELEMENT_SET_NAMES_UNSUPP "
+ << details << "\n";
+ //rr->errcode = YAZ_BIB1_ELEMENT_SET_NAMES_UNSUPP;
+ //if (details)
+ // rr->errstring = odr_strdup(rr->stream, details);
+ }
+ else if (ret_code == 2)
+ {
+ std::cout << "ERROR: YAZ_BIB1_RECORD_SYNTAX_UNSUPP"
+ << details << "\n";
+ //rr->errcode = YAZ_BIB1_RECORD_SYNTAX_UNSUPP;
+ //if (input_syntax)
+ //{
+ // char oidbuf[OID_STR_MAX];
+ // oid_to_dotstring(input_syntax, oidbuf);
+ // rr->errstring = odr_strdup(rr->stream, oidbuf);
+ //}
+ }
+ //package.session().close();
+ return;
+ }
+
+
+
+ // now re-coding the z3950 backend present request