X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=include%2Fyazproxy%2Fproxy.h;h=dc56028bf7c861f87b0feff630e756ae361be49c;hb=e7f41bcf7b9b13a3a744ade63f5c00ba9097c990;hp=854191c430e81ae611e70fa9c258a4778c1e5182;hpb=2faeba3f61ac423a9c71222e9a15377724d8f0fa;p=yazproxy-moved-to-github.git diff --git a/include/yazproxy/proxy.h b/include/yazproxy/proxy.h index 854191c..dc56028 100644 --- a/include/yazproxy/proxy.h +++ b/include/yazproxy/proxy.h @@ -1,4 +1,4 @@ -/* $Id: proxy.h,v 1.16 2005-05-18 20:15:22 adam Exp $ +/* $Id: proxy.h,v 1.21 2005-06-21 18:46:04 adam Exp $ Copyright (c) 1998-2005, Index Data. This file is part of the yaz-proxy. @@ -22,11 +22,13 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA #ifndef YAZ_PROXY_H_INCLUDED #define YAZ_PROXY_H_INCLUDED +#include #include #include #include #include #include +#include #include class Yaz_Proxy; @@ -48,9 +50,14 @@ enum YAZ_Proxy_MARCXML_mode { marcxml, }; +class Msg_Thread; + /// Information Retrieval Proxy Server. -class YAZ_EXPORT Yaz_Proxy : public Yaz_Z_Assoc { +class YAZ_EXPORT Yaz_Proxy : public yazpp_1::Z_Assoc { + friend class Proxy_Msg; private: + char *m_peername; + int m_ref_count; char *get_cookie(Z_OtherInformation **otherInfo); char *get_proxy(Z_OtherInformation **otherInfo); void get_charset_and_lang_negotiation(Z_OtherInformation **otherInfo, @@ -59,10 +66,10 @@ class YAZ_EXPORT Yaz_Proxy : public Yaz_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 shutdown(); void releaseClient(); Yaz_ProxyClient *m_client; - IYaz_PDU_Observable *m_PDU_Observable; + yazpp_1::IPDU_Observable *m_PDU_Observable; + yazpp_1::ISocketObservable *m_socket_observable; Yaz_ProxyClient *m_clientPool; Yaz_Proxy *m_parent; int m_seqno; @@ -86,13 +93,20 @@ class YAZ_EXPORT Yaz_Proxy : public Yaz_Z_Assoc { int m_bytes_sent; int m_bytes_recv; int m_bw_max; + + yazpp_1::GDU *m_timeout_gdu; + enum timeout_mode { + timeout_normal, + timeout_reduce, + timeout_xsl + } m_timeout_mode; + 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); - int handle_authentication(Z_APDU *apdu); void display_diagrecs(Z_DiagRec **pp, int num); Z_Records *create_nonSurrogateDiagnostics(ODR o, int error, const char *addinfo); @@ -109,7 +123,7 @@ class YAZ_EXPORT Yaz_Proxy : public Yaz_Z_Assoc { int m_reconfig_flag; Yaz_ProxyConfig *check_reconfigure(); int m_request_no; - int m_invalid_session; + int m_flag_invalid_session; YAZ_Proxy_MARCXML_mode m_marcxml_mode; void *m_stylesheet_xsp; // Really libxslt's xsltStylesheetPtr int m_stylesheet_offset; @@ -159,12 +173,13 @@ class YAZ_EXPORT Yaz_Proxy : public Yaz_Z_Assoc { Z_DefaultDiagFormat *ddf); int m_http_keepalive; const char *m_http_version; - Yaz_cql2rpn m_cql2rpn; + yazpp_1::Yaz_cql2rpn m_cql2rpn; void *m_time_tv; void logtime(); 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(); @@ -173,16 +188,31 @@ class YAZ_EXPORT Yaz_Proxy : public Yaz_Z_Assoc { char *m_usemarcon_ini_stage2; Yaz_usemarcon *m_usemarcon; Yaz_CharsetConverter *m_charset_converter; + yazpp_1::GDUQueue m_in_queue; public: - Yaz_Proxy(IYaz_PDU_Observable *the_PDU_Observable, + Yaz_Proxy(yazpp_1::IPDU_Observable *the_PDU_Observable, + yazpp_1::ISocketObservable *the_socket_observable, Yaz_Proxy *parent = 0); ~Yaz_Proxy(); + + + void inc_ref(); + bool dec_ref(); + + + int handle_authentication(Z_APDU *apdu); + void result_authentication(Z_APDU *apdu, int ret); + void handle_init(Z_APDU *apdu); void inc_request_no(); 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 handle_incoming_HTTP(Z_HTTP_Request *req); void handle_incoming_Z_PDU(Z_APDU *apdu); - IYaz_PDU_Observer* sessionNotify - (IYaz_PDU_Observable *the_PDU_Observable, int fd); + void handle_incoming_Z_PDU_2(Z_APDU *apdu); + IPDU_Observer *sessionNotify(yazpp_1::IPDU_Observable *the_PDU_Observable, + int fd); void failNotify(); void timeoutNotify(); void connectNotify(); @@ -205,6 +235,7 @@ class YAZ_EXPORT Yaz_Proxy : public Yaz_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); + Msg_Thread *m_my_thread; }; #endif