X-Git-Url: http://git.indexdata.com/?p=yazproxy-moved-to-github.git;a=blobdiff_plain;f=include%2Fyazproxy%2Fproxy.h;h=3a1cb8a00f5328c90e9a0b1849eac329d4766c0a;hp=e80924f8e9918659c23f3c1ec9b9a403ed805117;hb=7efe8383431522089f1e06864dc8d7fdf782a8a6;hpb=d1c87720d3ce527cde3486b3b8154fb6316e279e diff --git a/include/yazproxy/proxy.h b/include/yazproxy/proxy.h index e80924f..3a1cb8a 100644 --- a/include/yazproxy/proxy.h +++ b/include/yazproxy/proxy.h @@ -1,7 +1,5 @@ -/* $Id: proxy.h,v 1.32 2006-04-06 16:25:21 adam Exp $ - Copyright (c) 1998-2006, Index Data. - -This file is part of the yazproxy. +/* This file is part of YAZ proxy + Copyright (C) 1998-2011 Index Data YAZ proxy is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free @@ -14,10 +12,9 @@ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License -along with YAZ proxy; see the file LICENSE. If not, write to the -Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA -02111-1307, USA. - */ +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ #ifndef YAZ_PROXY_H_INCLUDED #define YAZ_PROXY_H_INCLUDED @@ -50,7 +47,7 @@ class Yaz_CharsetConverter; enum YAZ_Proxy_MARCXML_mode { none, - marcxml, + marcxml }; class Msg_Thread; @@ -66,9 +63,12 @@ class YAZ_EXPORT Yaz_Proxy : public yazpp_1::Z_Assoc { char *get_proxy(Z_OtherInformation **otherInfo); void get_charset_and_lang_negotiation(Z_OtherInformation **otherInfo, char **charstes, char **langs, int *selected); + void HTTP_Forwarded(Z_GDU *z_gdu); + void connect_stat(bool &block, int &reduce); Yaz_ProxyClient *get_client(Z_APDU *apdu, const char *cookie, - const char *proxy_host); + const char *proxy_host, int *http_code); void srw_get_client(const char *db, const char **backend_db); + int get_number_of_connections(); Z_APDU *result_set_optimize(Z_APDU *apdu); void releaseClient(); Yaz_ProxyClient *m_client; @@ -83,6 +83,7 @@ class YAZ_EXPORT Yaz_Proxy : public yazpp_1::Z_Assoc { int m_keepalive_limit_pdu; int m_client_idletime; int m_target_idletime; + int m_max_sockets; int m_debug_mode; char *m_proxyTarget; char *m_default_target; @@ -92,7 +93,7 @@ class YAZ_EXPORT Yaz_Proxy : public yazpp_1::Z_Assoc { long m_seed; char *m_optimize; int m_session_no; // sequence for each client session - char m_session_str[30]; // session string (time:session_no) + char m_session_str[200]; // session string (time:session_no) Yaz_ProxyConfig *m_config; char *m_config_fname; int m_bytes_sent; @@ -107,7 +108,6 @@ class YAZ_EXPORT Yaz_Proxy : public yazpp_1::Z_Assoc { timeout_xsl } m_timeout_mode; - int m_initial_reduce; int m_max_connect; int m_max_connect_period; int m_limit_connect; @@ -123,6 +123,8 @@ class YAZ_EXPORT Yaz_Proxy : public yazpp_1::Z_Assoc { void display_diagrecs(Z_DiagRec **pp, int num); Z_Records *create_nonSurrogateDiagnostics(ODR o, int error, const char *addinfo); + Z_ListEntries *create_nonSurrogateDiagnostics2(ODR o, int error, + const char *addinfo); Z_APDU *handle_query_validation(Z_APDU *apdu); Z_APDU *handle_query_transformation(Z_APDU *apdu); @@ -145,7 +147,7 @@ class YAZ_EXPORT Yaz_Proxy : public yazpp_1::Z_Assoc { char *m_schema; char *m_backend_type; char *m_backend_charset; - int m_frontend_type; + Odr_oid m_frontend_type[OID_SIZE]; void convert_to_frontend_type(Z_NamePlusRecordList *p); void convert_to_marcxml(Z_NamePlusRecordList *p, const char *charset); void convert_records_charset(Z_NamePlusRecordList *p, const char *charset); @@ -167,26 +169,34 @@ class YAZ_EXPORT Yaz_Proxy : public yazpp_1::Z_Assoc { int send_PDU_convert(Z_APDU *apdu); ODR m_s2z_odr_init; ODR m_s2z_odr_search; + ODR m_s2z_odr_scan; int m_s2z_hit_count; int m_s2z_packing; char *m_s2z_database; Z_APDU *m_s2z_init_apdu; Z_APDU *m_s2z_search_apdu; Z_APDU *m_s2z_present_apdu; + Z_APDU *m_s2z_scan_apdu; char *m_s2z_stylesheet; char *m_soap_ns; int file_access(Z_HTTP_Request *hreq); 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_to_srw_client_ok(Z_ListEntries *entries); int send_http_response(int code); 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_scan_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, Z_DefaultDiagFormat *ddf); + int z_to_srw_diag(ODR o, Z_SRW_scanResponse *srw_res, + Z_DiagRec *dr); int m_http_keepalive; const char *m_http_version; yazpp_1::Yaz_cql2rpn m_cql2rpn; @@ -202,6 +212,7 @@ class YAZ_EXPORT Yaz_Proxy : public yazpp_1::Z_Assoc { void low_socket_close(); char *m_usemarcon_ini_stage1; char *m_usemarcon_ini_stage2; + char *m_backend_elementset; Yaz_usemarcon *m_usemarcon; Yaz_CharsetConverter *m_charset_converter; yazpp_1::GDUQueue m_in_queue; @@ -212,12 +223,11 @@ class YAZ_EXPORT Yaz_Proxy : public yazpp_1::Z_Assoc { Yaz_Proxy *parent = 0); ~Yaz_Proxy(); - void inc_ref(); - bool dec_ref(bool main_ptr); - + bool dec_ref(); int handle_authentication(Z_APDU *apdu); + int handle_global_authentication(Z_APDU *apdu); void result_authentication(Z_APDU *apdu, int ret); void handle_init(Z_APDU *apdu); void inc_request_no(); @@ -254,6 +264,7 @@ class YAZ_EXPORT Yaz_Proxy : public yazpp_1::Z_Assoc { int handle_init_response_for_invalid_session(Z_APDU *apdu); void set_debug_mode(int mode); void send_response_fail_client(const char *addr); + int m_num_msg_threads; Msg_Thread *m_my_thread; void base64_decode(const char *base64, char *buf, int buf_len); }; @@ -262,6 +273,7 @@ class YAZ_EXPORT Yaz_Proxy : public yazpp_1::Z_Assoc { /* * Local variables: * c-basic-offset: 4 + * c-file-style: "Stroustrup" * indent-tabs-mode: nil * End: * vim: shiftwidth=4 tabstop=8 expandtab