Reformat: delete trailing whitespace
[metaproxy-moved-to-github.git] / include / metaproxy / util.hpp
index 3f45349..ab0834b 100644 (file)
@@ -1,5 +1,5 @@
 /* This file is part of Metaproxy.
-   Copyright (C) 2005-2011 Index Data
+   Copyright (C) 2005-2012 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<typename T> 
+
+        template<typename T>
         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<std::string> &db);
-        
+
         void get_vhost_otherinfo(Z_OtherInformation *otherInformation,
                                  std::list<std::string> &vhosts);
-        
+
         int remove_vhost_otherinfo(Z_OtherInformation **otherInformation,
                                    std::list<std::string> &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,6 +104,12 @@ namespace metaproxy_1 {
         void get_default_diag(Z_DefaultDiagFormat *r,
                               int &error_code, std::string &addinfo);
 
+        void piggyback(int smallSetUpperBound,
+                       int largeSetLowerBound,
+                       int mediumSetPresentNumber,
+                       int result_set_size,
+                       int &number_to_present);
+
         void piggyback_sr(Z_SearchRequest *sreq,
                           Odr_int result_set_size,
                           Odr_int &number_to_present,
@@ -118,6 +124,8 @@ namespace metaproxy_1 {
                        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 {
@@ -126,9 +134,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);
@@ -144,6 +152,18 @@ namespace metaproxy_1 {
         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<Rep> m_p;