X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fyaz-ir-assoc.cpp;h=6753fc9b4bf4295cb687f63138716c8e1febdca6;hb=71b6a2c41c24d62fb4b195893b63fc7e1e158adb;hp=358a616c77b09701b35607488be7d301caac4937;hpb=26b3f7f15abcb69aaf00fb6bdaf410ff3e7de14c;p=yazpp-moved-to-github.git diff --git a/src/yaz-ir-assoc.cpp b/src/yaz-ir-assoc.cpp index 358a616..6753fc9 100644 --- a/src/yaz-ir-assoc.cpp +++ b/src/yaz-ir-assoc.cpp @@ -1,10 +1,18 @@ /* - * Copyright (c) 1998-1999, Index Data. + * Copyright (c) 1998-2000, Index Data. * See the file LICENSE for details. - * Sebastian Hammer, Adam Dickmeiss * * $Log: yaz-ir-assoc.cpp,v $ - * Revision 1.11 1999-12-06 13:52:45 adam + * Revision 1.13 2000-09-06 14:23:45 adam + * WIN32 updates. + * + * Revision 1.12 2000/05/10 11:36:58 ian + * Added default parameters for refid to request functions. + * Added default parameter for result set name to search and present request. + * Commented out forced logging of PDU contents. + * Added send_deleteResultSetRequest + * + * Revision 1.11 1999/12/06 13:52:45 adam * Modified for new location of YAZ header files. Experimental threaded * operation. * @@ -67,6 +75,7 @@ void Yaz_IR_Assoc::get_databaseNames (int *num, char ***list) *list = m_databaseNames; } +typedef char *charp; void Yaz_IR_Assoc::set_databaseNames (int num, const char **list) { int i; @@ -75,7 +84,8 @@ void Yaz_IR_Assoc::set_databaseNames (int num, const char **list) delete [] m_databaseNames[i]; delete [] m_databaseNames; m_num_databaseNames = num; - m_databaseNames = new (char*) [num]; + + m_databaseNames = new char *[num]; for (i = 0; iu.searchRequest; @@ -233,10 +245,24 @@ int Yaz_IR_Assoc::send_searchRequest(Yaz_Z_Query *query) set_otherInformationString(&req->otherInfo, VAL_COOKIE, 1, m_cookie); assert (req->otherInfo); } + + if ( pRefId ) + { + req->referenceId = getRefID(pRefId); + } + + if ( pResultSetId ) + { + req->resultSetName = pResultSetId; + } + return send_Z_PDU(apdu); } -int Yaz_IR_Assoc::send_presentRequest(int start, int number) +int Yaz_IR_Assoc::send_presentRequest(int start, + int number, + char* pResultSetId, + char* pRefId) { Z_APDU *apdu = create_Z_PDU(Z_APDU_presentRequest); Z_PresentRequest *req = apdu->u.presentRequest; @@ -265,8 +291,20 @@ int Yaz_IR_Assoc::send_presentRequest(int start, int number) compo.which = Z_RecordComp_simple; compo.u.simple = elementSetNames; } + if (m_cookie) set_otherInformationString(&req->otherInfo, VAL_COOKIE, 1, m_cookie); + + if ( pRefId ) + { + req->referenceId = getRefID(pRefId); + } + + if ( pResultSetId ) + { + req->resultSetId = pResultSetId; + } + return send_Z_PDU(apdu); } @@ -358,7 +396,7 @@ void Yaz_IR_Assoc::set_lastReceived(int lastReceived) m_lastReceived = lastReceived; } -int Yaz_IR_Assoc::send_initRequest() +int Yaz_IR_Assoc::send_initRequest(char* pRefId) { Z_APDU *apdu = create_Z_PDU(Z_APDU_initRequest); Z_InitRequest *req = apdu->u.initRequest; @@ -376,6 +414,11 @@ int Yaz_IR_Assoc::send_initRequest() ODR_MASK_SET(req->protocolVersion, Z_ProtocolVersion_2); ODR_MASK_SET(req->protocolVersion, Z_ProtocolVersion_3); + if ( pRefId ) + { + req->referenceId = getRefID(pRefId); + } + if (m_proxy && m_host) set_otherInformationString(&req->otherInfo, VAL_PROXY, 1, m_host); if (m_cookie) @@ -383,3 +426,37 @@ int Yaz_IR_Assoc::send_initRequest() return send_Z_PDU(apdu); } +int Yaz_IR_Assoc::send_deleteResultSetRequest(char* pResultSetId, char* pRefId) +{ + char* ResultSetIds[1]; + + Z_APDU *apdu = create_Z_PDU(Z_APDU_deleteResultSetRequest); + Z_DeleteResultSetRequest *req = apdu->u.deleteResultSetRequest; + + if ( pResultSetId ) + { + *req->deleteFunction = Z_DeleteResultSetRequest_list; + req->num_resultSetList = 1; + ResultSetIds[0] = pResultSetId; + req->resultSetList = ResultSetIds; + } + else + { + *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); + if (m_cookie) + set_otherInformationString(&req->otherInfo, VAL_COOKIE, 1, m_cookie); + + + return send_Z_PDU(apdu); +} + +