X-Git-Url: http://git.indexdata.com/?p=yazpp-moved-to-github.git;a=blobdiff_plain;f=src%2Fyaz-ir-assoc.cpp;h=0978e060c521bd5f3f74f5e85ed53299b1e37d8d;hp=4a004cb7847a2999d1cf5f50dedf3afdf77e6c12;hb=d62e0baee8ee3cccced41746ef09fc3e01f401d5;hpb=7411ed6df7fc0b535f83503f73d70e80f390e295 diff --git a/src/yaz-ir-assoc.cpp b/src/yaz-ir-assoc.cpp index 4a004cb..0978e06 100644 --- a/src/yaz-ir-assoc.cpp +++ b/src/yaz-ir-assoc.cpp @@ -1,14 +1,16 @@ -/* - * Copyright (c) 1998-2003, Index Data. +/* This file is part of the yazpp toolkit. + * Copyright (C) Index Data and Mike Taylor * See the file LICENSE for details. - * - * $Id: yaz-ir-assoc.cpp,v 1.26 2005-06-25 15:53:19 adam Exp $ */ +#if HAVE_CONFIG_H +#include +#endif #include #include -#include +#include +#include using namespace yazpp_1; @@ -17,7 +19,7 @@ IR_Assoc::IR_Assoc(IPDU_Observable *the_PDU_Observable) { m_num_databaseNames = 0; m_databaseNames = 0; - m_preferredRecordSyntax = VAL_NONE; + m_preferredRecordSyntax = 0; m_elementSetNames = 0; m_lastReceived = 0; m_host = 0; @@ -30,6 +32,7 @@ IR_Assoc::IR_Assoc(IPDU_Observable *the_PDU_Observable) IR_Assoc::~IR_Assoc() { + xfree(m_preferredRecordSyntax); if (m_elementSetNames) delete [] m_elementSetNames->u.generic; delete [] m_elementSetNames; @@ -89,35 +92,20 @@ void IR_Assoc::set_databaseNames(const char *dblist, const char *sep) delete [] list; } -void IR_Assoc::set_preferredRecordSyntax (int value) -{ - m_preferredRecordSyntax = value; -} - void IR_Assoc::set_preferredRecordSyntax (const char *syntax) { - m_preferredRecordSyntax = VAL_NONE; + xfree(m_preferredRecordSyntax); + m_preferredRecordSyntax = 0; if (syntax && *syntax) - m_preferredRecordSyntax = oid_getvalbyname (syntax); -} - -void IR_Assoc::get_preferredRecordSyntax (int *value) -{ - *value = m_preferredRecordSyntax; + m_preferredRecordSyntax = xstrdup(syntax); } void IR_Assoc::get_preferredRecordSyntax (const char **dst) { - struct oident ent; - ent.proto = PROTO_Z3950; - ent.oclass = CLASS_RECSYN; - ent.value = (enum oid_value) m_preferredRecordSyntax; - - int oid[OID_SIZE]; - oid_ent_to_oid (&ent, oid); - struct oident *entp = oid_getentbyoid (oid); - - *dst = entp ? entp->desc : ""; + if (m_preferredRecordSyntax) + *dst = m_preferredRecordSyntax; + else + *dst = ""; } void IR_Assoc::set_elementSetName (const char *elementSetName) @@ -177,7 +165,7 @@ void IR_Assoc::recv_Z_PDU(Z_APDU *apdu, int len) recv_searchRequest(apdu->u.searchRequest); break; case Z_APDU_searchResponse: - yaz_log (m_log, "recv searchResponse"); + yaz_log (m_log, "recv searchResponse"); recv_searchResponse(apdu->u.searchResponse); break; case Z_APDU_presentRequest: @@ -201,28 +189,25 @@ int IR_Assoc::send_searchRequest(Yaz_Z_Query *query, { Z_APDU *apdu = create_Z_PDU(Z_APDU_searchRequest); Z_SearchRequest *req = apdu->u.searchRequest; - int recordSyntax; req->query = query->get_Z_Query(); if (!req->query) return -1; get_databaseNames (&req->num_databaseNames, &req->databaseNames); - int oid_syntax[OID_SIZE]; - oident prefsyn; + const char *recordSyntax; get_preferredRecordSyntax(&recordSyntax); - if (recordSyntax != VAL_NONE) + if (recordSyntax && *recordSyntax) { - prefsyn.proto = PROTO_Z3950; - prefsyn.oclass = CLASS_RECSYN; - prefsyn.value = (enum oid_value) recordSyntax; - oid_ent_to_oid(&prefsyn, oid_syntax); - req->preferredRecordSyntax = oid_syntax; + req->preferredRecordSyntax + = yaz_string_to_oid_odr(yaz_oid_std(), CLASS_RECSYN, recordSyntax, + odr_encode()); } yaz_log (m_log, "send_searchRequest"); assert (req->otherInfo == 0); if (m_cookie) { - set_otherInformationString(&req->otherInfo, VAL_COOKIE, 1, m_cookie); + set_otherInformationString(&req->otherInfo, yaz_oid_userinfo_cookie, + 1, m_cookie); assert (req->otherInfo); } @@ -239,10 +224,10 @@ int IR_Assoc::send_searchRequest(Yaz_Z_Query *query, return send_Z_PDU(apdu, 0); } -int IR_Assoc::send_presentRequest(int start, - int number, - char* pResultSetId, - char* pRefId) +int IR_Assoc::send_presentRequest(Odr_int start, + Odr_int number, + char* pResultSetId, + char* pRefId) { Z_APDU *apdu = create_Z_PDU(Z_APDU_presentRequest); Z_PresentRequest *req = apdu->u.presentRequest; @@ -250,17 +235,13 @@ int IR_Assoc::send_presentRequest(int start, req->resultSetStartPoint = &start; req->numberOfRecordsRequested = &number; - int oid_syntax[OID_SIZE]; - oident prefsyn; - int recordSyntax; + const char *recordSyntax; get_preferredRecordSyntax (&recordSyntax); - if (recordSyntax != VAL_NONE) + if (recordSyntax && *recordSyntax) { - prefsyn.proto = PROTO_Z3950; - prefsyn.oclass = CLASS_RECSYN; - prefsyn.value = (enum oid_value) recordSyntax; - oid_ent_to_oid(&prefsyn, oid_syntax); - req->preferredRecordSyntax = oid_syntax; + req->preferredRecordSyntax = + yaz_string_to_oid_odr(yaz_oid_std(), CLASS_RECSYN, recordSyntax, + odr_encode()); } Z_RecordComposition compo; Z_ElementSetNames *elementSetNames; @@ -273,7 +254,8 @@ int IR_Assoc::send_presentRequest(int start, } if (m_cookie) - set_otherInformationString(&req->otherInfo, VAL_COOKIE, 1, m_cookie); + set_otherInformationString(&req->otherInfo, yaz_oid_userinfo_cookie, + 1, m_cookie); if ( pRefId ) { @@ -384,7 +366,7 @@ int IR_Assoc::send_initRequest(char* pRefId) { Z_APDU *apdu = create_Z_PDU(Z_APDU_initRequest); Z_InitRequest *req = apdu->u.initRequest; - + ODR_MASK_SET(req->options, Z_Options_search); ODR_MASK_SET(req->options, Z_Options_present); ODR_MASK_SET(req->options, Z_Options_namedResultSets); @@ -404,9 +386,11 @@ int IR_Assoc::send_initRequest(char* pRefId) } if (m_proxy && m_host) - set_otherInformationString(&req->otherInfo, VAL_PROXY, 1, m_host); + set_otherInformationString(&req->otherInfo, yaz_oid_userinfo_proxy, + 1, m_host); if (m_cookie) - set_otherInformationString(&req->otherInfo, VAL_COOKIE, 1, m_cookie); + set_otherInformationString(&req->otherInfo, yaz_oid_userinfo_cookie, + 1, m_cookie); return send_Z_PDU(apdu, 0); } @@ -428,16 +412,18 @@ int IR_Assoc::send_deleteResultSetRequest(char* pResultSetId, char* pRefId) { *req->deleteFunction = Z_DeleteResultSetRequest_all; } - + if ( pRefId ) { req->referenceId = getRefID(pRefId); } if (m_proxy && m_host) - set_otherInformationString(&req->otherInfo, VAL_PROXY, 1, m_host); + set_otherInformationString(&req->otherInfo, yaz_oid_userinfo_proxy, + 1, m_host); if (m_cookie) - set_otherInformationString(&req->otherInfo, VAL_COOKIE, 1, m_cookie); + set_otherInformationString(&req->otherInfo, yaz_oid_userinfo_cookie, + 1, m_cookie); return send_Z_PDU(apdu, 0); } @@ -446,6 +432,7 @@ int IR_Assoc::send_deleteResultSetRequest(char* pResultSetId, char* pRefId) /* * Local variables: * c-basic-offset: 4 + * c-file-style: "Stroustrup" * indent-tabs-mode: nil * End: * vim: shiftwidth=4 tabstop=8 expandtab