X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=include%2Fmetaproxy%2Futil.hpp;h=26b9c1eefa67f7a97e12040a5dbf0b47e3f21149;hb=f3e215cc00b02e3d92016f095295af2ba4649e2f;hp=810afbde8bcc74d19736e6bc160b53d64a250c2f;hpb=e6d572ef110d14fa55115021505b808620457bd3;p=metaproxy-moved-to-github.git diff --git a/include/metaproxy/util.hpp b/include/metaproxy/util.hpp index 810afbd..26b9c1e 100644 --- a/include/metaproxy/util.hpp +++ b/include/metaproxy/util.hpp @@ -1,5 +1,5 @@ /* This file is part of Metaproxy. - Copyright (C) 2005-2010 Index Data + Copyright (C) Index Data Metaproxy 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 @@ -35,26 +35,26 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA namespace metaproxy_1 { namespace util { - - template + + template std::string to_string(const T& t) { std::ostringstream o; if(o << t) - return o.str(); + return o.str(); return std::string(); }; - const char * + const char * record_composition_to_esn(Z_RecordComposition *comp); - std::string http_header_value(const Z_HTTP_Header* header, + std::string http_header_value(const Z_HTTP_Header* header, const std::string name); - std::string http_headers_debug(const Z_HTTP_Request &http_req); + std::string http_headers_debug(const Z_HTTP_Request &http_req); - void http_response(metaproxy_1::Package &package, - const std::string &content, + void http_response(metaproxy_1::Package &package, + const std::string &content, int http_code = 200); @@ -77,16 +77,16 @@ namespace metaproxy_1 { void split_zurl(std::string zurl, std::string &host, std::list &db); - + void get_vhost_otherinfo(Z_OtherInformation *otherInformation, std::list &vhosts); - + int remove_vhost_otherinfo(Z_OtherInformation **otherInformation, std::list &vhosts); - void set_vhost_otherinfo(Z_OtherInformation **otherInformation, + void set_vhost_otherinfo(Z_OtherInformation **otherInformation, ODR odr, - const std::string vhost, + const std::string vhost, const int cat); void set_vhost_otherinfo(Z_OtherInformation **otherInformation, @@ -104,12 +104,34 @@ namespace metaproxy_1 { void get_default_diag(Z_DefaultDiagFormat *r, int &error_code, std::string &addinfo); + Z_RecordComposition *piggyback_to_RecordComposition( + ODR odr, Odr_int result_set_size, Z_SearchRequest *sreq); + void piggyback(int smallSetUpperBound, int largeSetLowerBound, int mediumSetPresentNumber, int result_set_size, - int &number_to_present); - + int &number_to_present) +#ifdef __GNUC__ + __attribute__ ((deprecated)) +#endif + ; + void piggyback_sr(Z_SearchRequest *sreq, + Odr_int result_set_size, + Odr_int &number_to_present, + const char **element_set_name); + + void piggyback(Odr_int smallSetUpperBound, + Odr_int largeSetLowerBound, + Odr_int mediumSetPresentNumber, + const char *smallSetElementSetNames, + const char *mediumSetElementSetNames, + Odr_int result_set_size, + Odr_int &number_to_present, + const char **element_set_name); + + std::string uri_encode(std::string s); + std::string uri_decode(std::string s); }; class odr : public boost::noncopyable { @@ -118,9 +140,9 @@ namespace metaproxy_1 { odr(); ~odr(); operator ODR() const; - Z_APDU *create_close(const Z_APDU *in_apdu, + Z_APDU *create_close(const Z_APDU *in_apdu, int reason, const char *addinfo); - Z_APDU *create_initResponse(const Z_APDU *in_apdu, + Z_APDU *create_initResponse(const Z_APDU *in_apdu, int error, const char *addinfo); Z_APDU *create_searchResponse(const Z_APDU *in_apdu, int error, const char *addinfo); @@ -132,10 +154,25 @@ namespace metaproxy_1 { Z_GDU *create_HTTP_Response(metaproxy_1::Session &session, Z_HTTP_Request *req, int code); + Z_GDU *create_HTTP_Response_details(metaproxy_1::Session &session, + Z_HTTP_Request *req, int code, + const char *details); private: ODR m_odr; }; + class wrbuf : public boost::noncopyable + { + public: + wrbuf(); + ~wrbuf(); + operator WRBUF() const; + size_t len(); + const char *buf(); + private: + WRBUF m_wrbuf; + }; + class PlainFile { class Rep; boost::scoped_ptr m_p;