summaryrefslogtreecommitdiff
path: root/src/FileEntry.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2012-10-14 18:05:34 +0900
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2012-10-14 18:05:34 +0900
commitc904aa50fedd354937cb1dc29044712404c0c785 (patch)
tree934c3194f9b5ca733945edd9c8c737dec35040c5 /src/FileEntry.cc
parenteebc704b1933e5e43ff38cd37adb48d3daef1aad (diff)
Use uri_split instead of uri::parse where appropriate
Diffstat (limited to 'src/FileEntry.cc')
-rw-r--r--src/FileEntry.cc40
1 files changed, 22 insertions, 18 deletions
diff --git a/src/FileEntry.cc b/src/FileEntry.cc
index 27641c24..fbdcaf4a 100644
--- a/src/FileEntry.cc
+++ b/src/FileEntry.cc
@@ -130,9 +130,9 @@ OutputIterator enumerateInFlightHosts
(InputIterator first, InputIterator last, OutputIterator out)
{
for(; first != last; ++first) {
- uri::UriStruct us;
- if(uri::parse(us, (*first)->getUri())) {
- *out++ = us.host;
+ uri_split_result us;
+ if(uri_split(&us, (*first)->getUri().c_str()) == 0) {
+ *out++ = uri::getFieldString(us, USR_HOST, (*first)->getUri().c_str());
}
}
return out;
@@ -261,23 +261,25 @@ FileEntry::findFasterRequest
std::vector<std::string> normCands;
for(std::deque<std::string>::const_iterator i = uris_.begin(),
eoi = uris_.end(); i != eoi && fastCands.size() < NUM_URI; ++i) {
- uri::UriStruct us;
- if(!uri::parse(us, *i)) {
+ uri_split_result us;
+ if(uri_split(&us, (*i).c_str()) == -1) {
continue;
}
- if(std::count(inFlightHosts.begin(), inFlightHosts.end(),us.host)
+ std::string host = uri::getFieldString(us, USR_HOST, (*i).c_str());
+ std::string protocol = uri::getFieldString(us, USR_SCHEME, (*i).c_str());
+ if(std::count(inFlightHosts.begin(), inFlightHosts.end(), host)
>= maxConnectionPerServer_) {
A2_LOG_DEBUG(fmt("%s has already used %d times, not considered.",
(*i).c_str(),
maxConnectionPerServer_));
continue;
}
- if(findSecond(usedHosts.begin(), usedHosts.end(), us.host) !=
+ if(findSecond(usedHosts.begin(), usedHosts.end(), host) !=
usedHosts.end()) {
A2_LOG_DEBUG(fmt("%s is in usedHosts, not considered", (*i).c_str()));
continue;
}
- SharedHandle<ServerStat> ss = serverStatMan->find(us.host, us.protocol);
+ SharedHandle<ServerStat> ss = serverStatMan->find(host, protocol);
if(ss && ss->isOK()) {
if((basestat &&
ss->getDownloadSpeed() > basestat->calculateDownloadSpeed()*1.5) ||
@@ -332,11 +334,13 @@ void FileEntry::removeURIWhoseHostnameIs(const std::string& hostname)
std::deque<std::string> newURIs;
for(std::deque<std::string>::const_iterator itr = uris_.begin(),
eoi = uris_.end(); itr != eoi; ++itr) {
- uri::UriStruct us;
- if(!uri::parse(us, *itr)) {
+ uri_split_result us;
+ if(uri_split(&us, (*itr).c_str()) == -1) {
continue;
}
- if(us.host != hostname) {
+ if(us.fields[USR_HOST].len != hostname.size() ||
+ memcmp((*itr).c_str()+us.fields[USR_HOST].off, hostname.c_str(),
+ hostname.size()) != 0) {
newURIs.push_back(*itr);
}
}
@@ -411,9 +415,11 @@ void FileEntry::reuseUri(const std::vector<std::string>& ignore)
std::vector<std::string>::iterator insertionPoint = reusableURIs.begin();
for(std::vector<std::string>::iterator i = reusableURIs.begin(),
eoi = reusableURIs.end(); i != eoi; ++i) {
- uri::UriStruct us;
- if(uri::parse(us, *i) &&
- std::find(ignore.begin(), ignore.end(), us.host) == ignore.end()) {
+ uri_split_result us;
+ if(uri_split(&us, (*i).c_str()) == 0 &&
+ std::find(ignore.begin(), ignore.end(),
+ uri::getFieldString(us, USR_HOST, (*i).c_str()))
+ == ignore.end()) {
if(i != insertionPoint) {
*insertionPoint = *i;
}
@@ -524,9 +530,8 @@ size_t FileEntry::setUris(const std::vector<std::string>& uris)
bool FileEntry::addUri(const std::string& uri)
{
- uri::UriStruct us;
std::string peUri = util::percentEncodeMini(uri);
- if(uri::parse(us, peUri)) {
+ if(uri_split(NULL, peUri.c_str()) == 0) {
uris_.push_back(peUri);
return true;
} else {
@@ -536,9 +541,8 @@ bool FileEntry::addUri(const std::string& uri)
bool FileEntry::insertUri(const std::string& uri, size_t pos)
{
- uri::UriStruct us;
std::string peUri = util::percentEncodeMini(uri);
- if(uri::parse(us, peUri)) {
+ if(uri_split(NULL, peUri.c_str()) == 0) {
pos = std::min(pos, uris_.size());
uris_.insert(uris_.begin()+pos, peUri);
return true;