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
pull/1/head
Tatsuhiro Tsujikawa 2008-05-19 11:19:18 +00:00
parent 0189bbc6bc
commit f4ac2c2185
5 changed files with 42 additions and 32 deletions

View File

@ -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> 2008-05-19 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Defined option name and possible values as std::string to reduce Defined option name and possible values as std::string to reduce

View File

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

View File

@ -96,23 +96,23 @@ public:
return entityLength; return entityLength;
} }
std::string getHost() const; const std::string& getHost() const;
uint16_t getPort() 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; SharedHandle<Range> getRange() const;

View File

@ -85,9 +85,9 @@ bool Request::parseUrl(const std::string& url) {
std::string tempUrl; std::string tempUrl;
std::string::size_type sharpIndex = url.find("#"); std::string::size_type sharpIndex = url.find("#");
if(sharpIndex != std::string::npos) { if(sharpIndex != std::string::npos) {
tempUrl = urlencode(url.substr(0, sharpIndex)); urlencode(tempUrl, url.substr(0, sharpIndex));
} else { } else {
tempUrl = urlencode(url); urlencode(tempUrl, url);
} }
currentUrl = tempUrl; currentUrl = tempUrl;
std::string query; 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'); 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()) { if(src.empty()) {
return A2STR::NIL; result = A2STR::NIL;
return;
} }
size_t lastIndex = src.size()-1; size_t lastIndex = src.size()-1;
std::string result = src+" "; result = src+" ";
size_t index = lastIndex; size_t index = lastIndex;
while(index-- > 0) { while(index-- > 0) {
const char c = result[index]; 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 } // namespace aria2

View File

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