Browse Source

2008-05-19 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>

	Returns const reference. The internal urlencode function was 
optimized
	a little bit.
	* src/Request.cc
	* src/Request.h
	* src/HttpRequest.cc
	* src/HttpRequest.h
Tatsuhiro Tsujikawa 17 years ago
parent
commit
f4ac2c2185
5 changed files with 42 additions and 32 deletions
  1. 9 0
      ChangeLog
  2. 8 8
      src/HttpRequest.cc
  3. 8 8
      src/HttpRequest.h
  4. 7 6
      src/Request.cc
  5. 10 10
      src/Request.h

+ 9 - 0
ChangeLog

@@ -1,3 +1,12 @@
+2008-05-19  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
+
+	Returns const reference. The internal urlencode function was optimized
+	a little bit.
+	* src/Request.cc
+	* src/Request.h
+	* src/HttpRequest.cc
+	* src/HttpRequest.h
+
 2008-05-19  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
 	Defined option name and possible values as std::string to reduce

+ 8 - 8
src/HttpRequest.cc

@@ -256,12 +256,12 @@ void HttpRequest::configure(const Option* option)
   proxyAuthEnabled = option->getAsBool(PREF_HTTP_PROXY_AUTH_ENABLED);
 }
 
-std::string HttpRequest::getPreviousURI() const
+const std::string& HttpRequest::getPreviousURI() const
 {
   return request->getPreviousUrl();
 }
 
-std::string HttpRequest::getHost() const
+const std::string& HttpRequest::getHost() const
 {
   return request->getHost();
 }
@@ -271,32 +271,32 @@ uint16_t HttpRequest::getPort() const
   return request->getPort();
 }
 
-std::string HttpRequest::getMethod() const
+const std::string& HttpRequest::getMethod() const
 {
   return request->getMethod();
 }
 
-std::string HttpRequest::getProtocol() const
+const std::string& HttpRequest::getProtocol() const
 {
   return request->getProtocol();
 }
 
-std::string HttpRequest::getCurrentURI() const
+const std::string& HttpRequest::getCurrentURI() const
 {
   return request->getCurrentUrl();
 }
   
-std::string HttpRequest::getDir() const
+const std::string& HttpRequest::getDir() const
 {
   return request->getDir();
 }
 
-std::string HttpRequest::getFile() const
+const std::string& HttpRequest::getFile() const
 {
   return request->getFile();
 }
 
-std::string HttpRequest::getQuery() const
+const std::string& HttpRequest::getQuery() const
 {
   return request->getQuery();
 }

+ 8 - 8
src/HttpRequest.h

@@ -96,23 +96,23 @@ public:
     return entityLength;
   }
 
-  std::string getHost() const;
+  const std::string& getHost() const;
 
   uint16_t getPort() const;
 
-  std::string getMethod() const;
+  const std::string& getMethod() const;
 
-  std::string getProtocol() const;
+  const std::string& getProtocol() const;
 
-  std::string getCurrentURI() const;
+  const std::string& getCurrentURI() const;
   
-  std::string getDir() const;
+  const std::string& getDir() const;
 
-  std::string getFile() const;
+  const std::string& getFile() const;
 
-  std::string getQuery() const;
+  const std::string& getQuery() const;
 
-  std::string getPreviousURI() const;
+  const std::string& getPreviousURI() const;
 
   SharedHandle<Range> getRange() const;
 

+ 7 - 6
src/Request.cc

@@ -85,9 +85,9 @@ bool Request::parseUrl(const std::string& url) {
   std::string tempUrl;
   std::string::size_type sharpIndex = url.find("#");
   if(sharpIndex != std::string::npos) {
-    tempUrl = urlencode(url.substr(0, sharpIndex));
+    urlencode(tempUrl, url.substr(0, sharpIndex));
   } else {
-    tempUrl = urlencode(url);
+    urlencode(tempUrl, url);
   }
   currentUrl = tempUrl;
   std::string query;
@@ -173,13 +173,14 @@ bool Request::isHexNumber(const char c) const
   return ('0' <= c && c <= '9') || ('A' <= c && c <= 'F') || ('a' <= c && c <= 'f');
 }
 
-std::string Request::urlencode(const std::string& src) const
+void Request::urlencode(std::string& result, const std::string& src) const
 {
   if(src.empty()) {
-    return A2STR::NIL;
+    result = A2STR::NIL;
+    return;
   }
   size_t lastIndex = src.size()-1;
-  std::string result = src+"  ";
+  result = src+"  ";
   size_t index = lastIndex;
   while(index-- > 0) {
     const char c = result[index];
@@ -194,7 +195,7 @@ std::string Request::urlencode(const std::string& src) const
       }
     }
   }
-  return result.substr(0, result.size()-2);
+  result.erase(result.size()-2);
 }
 
 } // namespace aria2

+ 10 - 10
src/Request.h

@@ -90,7 +90,7 @@ private:
 
   bool isHexNumber(const char c) const;
 
-  std::string urlencode(const std::string& src) const;
+  void urlencode(std::string& result, const std::string& src) const;
 
 public:
   SharedHandle<CookieBox> cookieBox;
@@ -111,17 +111,17 @@ public:
   unsigned int getTryCount() const { return tryCount; }
   //bool noMoreTry() const { return tryCount >= PREF_MAX_TRY; }
 
-  std::string getUrl() const { return url; }
-  std::string getCurrentUrl() const { return currentUrl; }
-  std::string getPreviousUrl() const { return previousUrl; }
-  std::string getReferer() const { return referer; }
+  const std::string& getUrl() const { return url; }
+  const std::string& getCurrentUrl() const { return currentUrl; }
+  const std::string& getPreviousUrl() const { return previousUrl; }
+  const std::string& getReferer() const { return referer; }
   void setReferer(const std::string& url) { referer = previousUrl = url; }
-  std::string getProtocol() const { return protocol; }
-  std::string getHost() const { return host; }
+  const std::string& getProtocol() const { return protocol; }
+  const std::string& getHost() const { return host; }
   uint16_t getPort() const { return port; }
-  std::string getDir() const { return dir; }
-  std::string getFile() const { return file;}
-  std::string getQuery() const { return _query; }
+  const std::string& getDir() const { return dir; }
+  const std::string& getFile() const { return file;}
+  const std::string& getQuery() const { return _query; }
 
   void supportsPersistentConnection(bool f)
   {