X-Git-Url: http://git.indexdata.com/?p=yazproxy-moved-to-github.git;a=blobdiff_plain;f=include%2Fyazproxy%2Fproxy.h;h=5a6ae44c5e9c547a71a93c39c7b38f308fba20fb;hp=8aa8e7e2afc5d563a0aa842454c98b04b979c76b;hb=36388cfc9c49bf00dfbb3cc9932504a77af9b6f2;hpb=d7f41f16caf965adb1a5ffcdaa937787dfcc030a diff --git a/include/yazproxy/proxy.h b/include/yazproxy/proxy.h index 8aa8e7e..5a6ae44 100644 --- a/include/yazproxy/proxy.h +++ b/include/yazproxy/proxy.h @@ -1,4 +1,4 @@ -/* $Id: proxy.h,v 1.22 2005-06-25 15:58:33 adam Exp $ +/* $Id: proxy.h,v 1.27 2006-03-25 10:59:14 adam Exp $ Copyright (c) 1998-2005, Index Data. This file is part of the yaz-proxy. @@ -29,6 +29,7 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA #include #include #include +#include #include class Yaz_Proxy; @@ -58,6 +59,7 @@ class YAZ_EXPORT Yaz_Proxy : public yazpp_1::Z_Assoc { private: char *m_peername; int m_ref_count; + bool m_main_ptr_dec; char *get_cookie(Z_OtherInformation **otherInfo); char *get_proxy(Z_OtherInformation **otherInfo); void get_charset_and_lang_negotiation(Z_OtherInformation **otherInfo, @@ -66,7 +68,7 @@ class YAZ_EXPORT Yaz_Proxy : public yazpp_1::Z_Assoc { const char *proxy_host); void srw_get_client(const char *db, const char **backend_db); Z_APDU *result_set_optimize(Z_APDU *apdu); - void releaseClient(); + void releaseClient(); Yaz_ProxyClient *m_client; yazpp_1::IPDU_Observable *m_PDU_Observable; yazpp_1::ISocketObservable *m_socket_observable; @@ -84,6 +86,7 @@ class YAZ_EXPORT Yaz_Proxy : public yazpp_1::Z_Assoc { char *m_default_target; char *m_proxy_negotiation_charset; char *m_proxy_negotiation_lang; + char *m_proxy_negotiation_default_charset; long m_seed; char *m_optimize; int m_session_no; // sequence for each client session @@ -96,15 +99,17 @@ class YAZ_EXPORT Yaz_Proxy : public yazpp_1::Z_Assoc { yazpp_1::GDU *m_timeout_gdu; enum timeout_mode { + timeout_busy, timeout_normal, timeout_reduce, timeout_xsl } m_timeout_mode; + int m_connect_max; + int m_search_max; Yaz_bw m_bw_stat; int m_pdu_max; Yaz_bw m_pdu_stat; - Z_GDU *m_bw_hold_PDU; int m_max_record_retrieve; void handle_max_record_retrieve(Z_APDU *apdu); void display_diagrecs(Z_DiagRec **pp, int num); @@ -125,7 +130,7 @@ class YAZ_EXPORT Yaz_Proxy : public yazpp_1::Z_Assoc { int m_request_no; int m_flag_invalid_session; YAZ_Proxy_MARCXML_mode m_marcxml_mode; - void *m_stylesheet_xsp; // Really libxslt's xsltStylesheetPtr + void *m_stylesheet_xsp; // Really libxslt's xsltStylesheetPtr int m_stylesheet_offset; Z_APDU *m_stylesheet_apdu; Z_NamePlusRecordList *m_stylesheet_nprl; @@ -166,7 +171,10 @@ class YAZ_EXPORT Yaz_Proxy : public yazpp_1::Z_Assoc { int send_to_srw_client_error(int error, const char *add); int send_to_srw_client_ok(int hits, Z_Records *records, int start); int send_http_response(int code); - int send_srw_response(Z_SRW_PDU *srw_pdu); + int send_srw_response(Z_SRW_PDU *srw_pdu, int http_code = 200); + int send_srw_search_response(Z_SRW_diagnostic *diagnostics, + int num_diagnostics, + int http_code = 200); int send_srw_explain_response(Z_SRW_diagnostic *diagnostics, int num_diagnostics); int z_to_srw_diag(ODR o, Z_SRW_searchRetrieveResponse *srw_res, @@ -179,7 +187,7 @@ class YAZ_EXPORT Yaz_Proxy : public yazpp_1::Z_Assoc { Z_ElementSetNames *mk_esn_from_schema(ODR o, const char *schema); Z_ReferenceId *m_referenceId; NMEM m_referenceId_mem; - + #define NO_SPARE_SOLARIS_FD 10 int m_lo_fd[NO_SPARE_SOLARIS_FD]; void low_socket_open(); @@ -197,7 +205,7 @@ class YAZ_EXPORT Yaz_Proxy : public yazpp_1::Z_Assoc { void inc_ref(); - bool dec_ref(); + bool dec_ref(bool main_ptr); int handle_authentication(Z_APDU *apdu); @@ -207,7 +215,7 @@ class YAZ_EXPORT Yaz_Proxy : public yazpp_1::Z_Assoc { void recv_GDU(Z_GDU *apdu, int len); void recv_GDU_reduce(yazpp_1::GDU *gdu); void recv_GDU_normal(yazpp_1::GDU *gdu); - void recv_GDU_more(); + void recv_GDU_more(bool normal); void handle_incoming_HTTP(Z_HTTP_Request *req); void handle_incoming_Z_PDU(Z_APDU *apdu); void handle_incoming_Z_PDU_2(Z_APDU *apdu); @@ -219,7 +227,8 @@ class YAZ_EXPORT Yaz_Proxy : public yazpp_1::Z_Assoc { void markInvalid(); const char *option(const char *name, const char *value); void set_default_target(const char *target); - void set_proxy_negotiation (const char *charset, const char *lang); + void set_proxy_negotiation(const char *charset, const char *lang, + const char *default_charset); void set_target_charset(const char *charset); char *get_proxy_target() { return m_proxyTarget; }; char *get_session_str() { return m_session_str; }; @@ -235,7 +244,9 @@ class YAZ_EXPORT Yaz_Proxy : public yazpp_1::Z_Assoc { int get_log_mask() { return m_log_mask; }; int handle_init_response_for_invalid_session(Z_APDU *apdu); void set_debug_mode(int mode); + void send_response_fail_client(const char *addr); Msg_Thread *m_my_thread; + void base64_decode(const char *base64, char *buf, int buf_len); }; #endif