Fix C++ compiles on newer GCC
[yazpp-moved-to-github.git] / include / yaz++ / proxy.h
index 4cd619c..2fbdc46 100644 (file)
@@ -2,7 +2,7 @@
  * Copyright (c) 1998-2003, Index Data.
  * See the file LICENSE for details.
  * 
- * $Id: proxy.h,v 1.14 2003-10-09 12:11:09 adam Exp $
+ * $Id: proxy.h,v 1.17 2003-10-16 08:28:10 adam Exp $
  */
 
 #include <yaz++/z-assoc.h>
@@ -25,23 +25,40 @@ public:
     Yaz_ProxyConfig();
     ~Yaz_ProxyConfig();
     int read_xml(const char *fname);
+
+    int get_target_no(int no,
+                     const char **name,
+                     const char **url,
+                     int *limit_bw,
+                     int *limit_pdu,
+                     int *limit_req,
+                     int *target_idletime,
+                     int *client_idletime,
+                     int *max_clients,
+                     int *keepalive_limit_bw,
+                     int *keepalive_limit_pdu,
+                     int *pre_init);
+
     void get_target_info(const char *name, const char **url,
                         int *limit_bw, int *limit_pdu, int *limit_req,
                         int *target_idletime, int *client_idletime,
                         int *max_clients,
-                        int *keepalive_limit_bw, int *keepalive_limit_pdu);
-    void operator=(const Yaz_ProxyConfig &conf);
+                        int *keepalive_limit_bw, int *keepalive_limit_pdu,
+                        int *pre_init);
+
     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:
+    void operator=(const Yaz_ProxyConfig &conf);
 #if HAVE_XML2
     xmlDocPtr m_docPtr;
     xmlNodePtr m_proxyPtr;
     void return_target_info(xmlNodePtr ptr, const char **url,
                            int *limit_bw, int *limit_pdu, int *limit_req,
                            int *target_idletime, int *client_idletime,
-                           int *keepalive_limit_bw, int *keepalive_limit_pdu);
+                           int *keepalive_limit_bw, int *keepalive_limit_pdu,
+                           int *pre_init);
     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,
@@ -100,7 +117,8 @@ class YAZ_EXPORT Yaz_bw {
 /// Private class
 class YAZ_EXPORT Yaz_ProxyClient : public Yaz_Z_Assoc {
     friend class Yaz_Proxy;
-    Yaz_ProxyClient(IYaz_PDU_Observable *the_PDU_Observable);
+    Yaz_ProxyClient(IYaz_PDU_Observable *the_PDU_Observable,
+                   Yaz_Proxy *parent);
     ~Yaz_ProxyClient();
     void recv_Z_PDU(Z_APDU *apdu, int len);
     IYaz_PDU_Observer* sessionNotify
@@ -131,6 +149,9 @@ class YAZ_EXPORT Yaz_ProxyClient : public Yaz_Z_Assoc {
     ODR m_init_odr;
     Z_APDU *m_initResponse;
     Yaz_RecordCache m_cache;
+    void pre_init_client();
+    int m_target_idletime;
+    Yaz_Proxy *m_root;
 };
 
 /// Information Retrieval Proxy Server.
@@ -159,7 +180,7 @@ class YAZ_EXPORT Yaz_Proxy : public Yaz_Z_Assoc {
     char *m_optimize;
     int m_session_no;         // sequence for each client session
     char m_session_str[30];  // session string (time:session_no)
-    Yaz_ProxyConfig m_config;
+    Yaz_ProxyConfig *m_config;
     char *m_config_fname;
     int m_bytes_sent;
     int m_bytes_recv;
@@ -178,11 +199,14 @@ class YAZ_EXPORT Yaz_Proxy : public Yaz_Z_Assoc {
     Z_APDU *handle_syntax_validation(Z_APDU *apdu);
     const char *load_balance(const char **url);
     int m_reconfig_flag;
-    void check_reconfigure();
+    Yaz_ProxyConfig *check_reconfigure();
     int m_request_no;
     int m_invalid_session;
+    int m_marcxml_flag;
+    void convert_to_marcxml(Z_NamePlusRecordList *p);
  public:
-    Yaz_Proxy(IYaz_PDU_Observable *the_PDU_Observable);
+    Yaz_Proxy(IYaz_PDU_Observable *the_PDU_Observable,
+             Yaz_Proxy *parent = 0);
     ~Yaz_Proxy();
     void recv_Z_PDU(Z_APDU *apdu, int len);
     void recv_Z_PDU_0(Z_APDU *apdu);
@@ -201,7 +225,9 @@ class YAZ_EXPORT Yaz_Proxy : public Yaz_Z_Assoc {
     void set_target_idletime (int t) { m_target_idletime = (t > 1) ? t : 600; };
     int get_target_idletime () { return m_target_idletime; }
     int set_config(const char *name);
-    int reconfig() { m_reconfig_flag = 1; }
+    void reconfig() { m_reconfig_flag = 1; }
     int send_to_client(Z_APDU *apdu);
+    void server(const char *addr);
+    void pre_init();
 };