* Copyright (c) 1998-2003, Index Data.
* See the file LICENSE for details.
*
- * $Id: proxy.h,v 1.8 2003-10-01 13:13:51 adam Exp $
+ * $Id: proxy.h,v 1.13 2003-10-08 09:32:48 adam Exp $
*/
#include <yaz++/z-assoc.h>
class Yaz_Proxy;
+#define MAX_ZURL_PLEX 10
+
struct Yaz_RecordCache_Entry;
class YAZ_EXPORT Yaz_ProxyConfig {
~Yaz_ProxyConfig();
int read_xml(const char *fname);
void get_target_info(const char *name, const char **url, int *keepalive,
- int *limit_bw, int *limit_pdu, int *limit_req);
+ int *limit_bw, int *limit_pdu, int *limit_req,
+ int *target_idletime, int *client_idletime,
+ int *max_clients);
void operator=(const Yaz_ProxyConfig &conf);
+ int check_query(ODR odr, const char *name, Z_Query *query, char **addinfo);
+ int check_syntax(ODR odr, const char *name,
+ Odr_oid *syntax, char **addinfo);
private:
#if HAVE_XML2
xmlDocPtr m_docPtr;
xmlNodePtr m_proxyPtr;
void return_target_info(xmlNodePtr ptr, const char **url, int *keepalive,
- int *limit_bw, int *limit_pdu, int *limit_req);
+ int *limit_bw, int *limit_pdu, int *limit_req,
+ int *target_idletime, int *client_idletime);
void return_limit(xmlNodePtr ptr,
int *limit_bw, int *limit_pdu, int *limit_req);
+ int check_type_1(ODR odr, xmlNodePtr ptr, Z_RPNQuery *query,
+ char **addinfo);
+ xmlNodePtr find_target_node(const char *name);
const char *get_text(xmlNodePtr ptr);
+ int check_type_1_attributes(ODR odr, xmlNodePtr ptr,
+ Z_AttributeList *attrs,
+ char **addinfo);
+ int check_type_1_structure(ODR odr, xmlNodePtr ptr, Z_RPNStructure *q,
+ char **addinfo);
#endif
int m_copy;
+ int match_list(int v, const char *m);
+ int atoi_l(const char **cp);
+
};
class YAZ_EXPORT Yaz_RecordCache {
void copy_searchRequest(Z_SearchRequest *sr);
void copy_presentRequest(Z_PresentRequest *pr);
+ void set_max_size(int sz);
private:
NMEM m_mem;
Yaz_RecordCache_Entry *m_entries;
int match (Yaz_RecordCache_Entry *entry,
Odr_oid *syntax, int offset,
Z_RecordComposition *comp);
+ int m_max_size;
};
class YAZ_EXPORT Yaz_bw {
int m_max_record_retrieve;
void handle_max_record_retrieve(Z_APDU *apdu);
void display_diagrecs(Z_DiagRec **pp, int num);
+ Z_Records *create_nonSurrogateDiagnostics(ODR o, int error,
+ const char *addinfo);
+
+ Z_APDU *handle_query_validation(Z_APDU *apdu);
+ Z_APDU *handle_syntax_validation(Z_APDU *apdu);
+ const char *load_balance(const char **url);
public:
Yaz_Proxy(IYaz_PDU_Observable *the_PDU_Observable);
~Yaz_Proxy();