summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2008-05-19 11:19:18 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2008-05-19 11:19:18 +0000
commitf4ac2c21856bc052d14c7d4f68d06fe5854e3d5e (patch)
tree8b61125da5f33a47914a5a8ea11ea09014a9e1cd
parent0189bbc6bc727d161b9adcd2fa82f6c573bbf0a7 (diff)
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
-rw-r--r--ChangeLog9
-rw-r--r--src/HttpRequest.cc16
-rw-r--r--src/HttpRequest.h16
-rw-r--r--src/Request.cc13
-rw-r--r--src/Request.h20
5 files changed, 42 insertions, 32 deletions
diff --git a/ChangeLog b/ChangeLog
index 08c175d3..668a8662 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,14 @@
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
temporary string object creation in runtime.
* src/HelpItemFactory.cc
diff --git a/src/HttpRequest.cc b/src/HttpRequest.cc
index 38071e4b..7940315d 100644
--- a/src/HttpRequest.cc
+++ b/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();
}
diff --git a/src/HttpRequest.h b/src/HttpRequest.h
index 5b6a2748..ba5c55a9 100644
--- a/src/HttpRequest.h
+++ b/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;
diff --git a/src/Request.cc b/src/Request.cc
index 17dee95c..aa66e2fa 100644
--- a/src/Request.cc
+++ b/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
diff --git a/src/Request.h b/src/Request.h
index 7ab2fec1..8cc397e4 100644
--- a/src/Request.h
+++ b/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)
{