+ int i;
+ logf (LOG_LOG, "Yaz_IR_Assoc::set_databaseNames num=%d", num);
+ for (i = 0; i<m_num_databaseNames; i++)
+ delete [] m_databaseNames[i];
+ delete [] m_databaseNames;
+ m_num_databaseNames = num;
+ m_databaseNames = new (char*) [num];
+ for (i = 0; i<m_num_databaseNames; i++)
+ {
+ m_databaseNames[i] = new char[strlen(list[i])+1];
+ strcpy(m_databaseNames[i], list[i]);
+ }
+}
+
+void Yaz_IR_Assoc::set_databaseNames(const char *dblist, const char *sep)
+{
+ const char **list = new (const char*) [strlen(dblist)];
+ char *dbtmp = new char[strlen(dblist)+1];
+ strcpy(dbtmp, dblist);
+ int num = 0;
+ int len = 0;
+ for (char *cp = dbtmp; ; cp++)
+ if (*cp && !strchr(sep, *cp))
+ len++;
+ else
+ {
+ if (len)
+ {
+ list[num] = cp - len;
+ num++;
+ }
+ if (!*cp)
+ break;
+ *cp = '\0';
+ len = 0;
+ }
+ set_databaseNames (num, list);
+ delete [] dbtmp;
+ delete [] list;
+}
+
+void Yaz_IR_Assoc::set_preferredRecordSyntax (int value)
+{
+ m_preferredRecordSyntax = value;
+}
+
+void Yaz_IR_Assoc::set_preferredRecordSyntax (const char *syntax)
+{
+ m_preferredRecordSyntax = VAL_NONE;
+ if (syntax && *syntax)
+ m_preferredRecordSyntax = oid_getvalbyname (syntax);
+}
+
+void Yaz_IR_Assoc::get_preferredRecordSyntax (int *value)
+{
+ *value = m_preferredRecordSyntax;
+}
+
+void Yaz_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 : "";
+}
+
+void Yaz_IR_Assoc::set_elementSetName (const char *elementSetName)
+{
+ if (m_elementSetNames)
+ delete [] m_elementSetNames->u.generic;
+ delete m_elementSetNames;
+ m_elementSetNames = 0;
+ if (elementSetName && *elementSetName)
+ {
+ m_elementSetNames = new Z_ElementSetNames;
+ m_elementSetNames->which = Z_ElementSetNames_generic;
+ m_elementSetNames->u.generic = new char[strlen(elementSetName)+1];
+ strcpy (m_elementSetNames->u.generic, elementSetName);
+ }
+}
+
+void Yaz_IR_Assoc::get_elementSetName (Z_ElementSetNames **elementSetNames)
+{
+ *elementSetNames = m_elementSetNames;
+}
+
+void Yaz_IR_Assoc::get_elementSetName (const char **elementSetName)
+{
+ if (!m_elementSetNames ||
+ m_elementSetNames->which != Z_ElementSetNames_generic)
+ {
+ *elementSetName = 0;
+ return;
+ }
+ *elementSetName = m_elementSetNames->u.generic;
+}
+
+void Yaz_IR_Assoc::recv_Z_PDU(Z_APDU *apdu)
+{
+ logf (LOG_LOG, "recv_Z_PDU");
+ m_lastReceived = apdu->which;
+ switch (apdu->which)
+ {
+ case Z_APDU_initResponse:
+ logf (LOG_LOG, "recv InitResponse");
+ recv_initResponse(apdu->u.initResponse);
+ break;
+ case Z_APDU_initRequest:
+ logf (LOG_LOG, "recv InitRequest");
+ recv_initRequest(apdu->u.initRequest);
+ break;
+ case Z_APDU_searchRequest:
+ logf (LOG_LOG, "recv searchRequest");
+ recv_searchRequest(apdu->u.searchRequest);
+ break;
+ case Z_APDU_searchResponse:
+ logf (LOG_LOG, "recv searchResponse");
+ recv_searchResponse(apdu->u.searchResponse);
+ break;
+ case Z_APDU_presentRequest:
+ logf (LOG_LOG, "recv presentRequest");
+ recv_presentRequest(apdu->u.presentRequest);
+ break;
+ case Z_APDU_presentResponse:
+ logf (LOG_LOG, "recv presentResponse");
+ recv_presentResponse(apdu->u.presentResponse);
+ break;
+ }