Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5)

Unified Diff: multi_http_fetcher.h

Issue 5205002: AU: Manual proxy support (Closed) Base URL: http://git.chromium.org/git/update_engine.git@master
Patch Set: Created 10 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: multi_http_fetcher.h
diff --git a/multi_http_fetcher.h b/multi_http_fetcher.h
index 533998b033b74d287943f959d9d30b787f13fb08..8680137c29e4d889139275edd020609cec066c40 100644
--- a/multi_http_fetcher.h
+++ b/multi_http_fetcher.h
@@ -24,9 +24,11 @@ template<typename BaseHttpFetcher>
class MultiHttpFetcher : public HttpFetcher, public HttpFetcherDelegate {
public:
typedef std::vector<std::pair<off_t, off_t> > RangesVect;
+ typedef std::vector<std::tr1::shared_ptr<BaseHttpFetcher> > FetchersVect;
- MultiHttpFetcher()
- : sent_transfer_complete_(false),
+ MultiHttpFetcher(ProxyResolver* proxy_resolver)
+ : HttpFetcher(proxy_resolver),
+ sent_transfer_complete_(false),
pending_next_fetcher_(false),
current_index_(0),
bytes_received_this_fetcher_(0) {}
@@ -38,9 +40,12 @@ class MultiHttpFetcher : public HttpFetcher, public HttpFetcherDelegate {
for (typename std::vector<std::tr1::shared_ptr<BaseHttpFetcher>
>::iterator it = fetchers_.begin(), e = fetchers_.end();
it != e; ++it) {
- (*it) = std::tr1::shared_ptr<BaseHttpFetcher>(new BaseHttpFetcher);
+ (*it) = std::tr1::shared_ptr<BaseHttpFetcher>(
+ new BaseHttpFetcher(proxy_resolver_));
(*it)->set_delegate(this);
+ LOG(INFO) << "list of fetchers: " << (uint64_t)(it->get());
petkov 2010/11/19 05:37:15 do you need this new logging? and below?
adlr 2010/11/20 02:52:29 oops. yeah, when i use c-style casts i'm being qui
}
+ LOG(INFO) << "done w/ list";
}
void SetOffset(off_t offset) {} // for now, doesn't support this
@@ -134,6 +139,14 @@ class MultiHttpFetcher : public HttpFetcher, public HttpFetcherDelegate {
(*it)->SetBuildType(is_official);
}
}
+
+ virtual void SetProxies(const std::vector<std::string>& proxies) {
petkov 2010/11/19 05:37:15 Instead of overloading this method, can't you just
adlr 2010/11/20 02:52:29 We could do that. We would probably also want to d
petkov 2010/11/22 17:49:00 Yeah, we should have a cleanup. And we could renam
+ for (typename FetchersVect::iterator it = fetchers_.begin(),
+ e = fetchers_.end();
+ it != e; ++it) {
petkov 2010/11/19 05:37:15 move up?
adlr 2010/11/20 02:52:29 Done.
+ (*it)->SetProxies(proxies);
+ }
+ }
private:
void SendTransferComplete(HttpFetcher* fetcher, bool successful) {
@@ -163,6 +176,12 @@ class MultiHttpFetcher : public HttpFetcher, public HttpFetcherDelegate {
TEST_AND_RETURN(current_index_ < ranges_.size());
TEST_AND_RETURN(fetcher == fetchers_[current_index_].get());
TEST_AND_RETURN(!pending_next_fetcher_);
+ if (fetcher != fetchers_[current_index_].get()) {
petkov 2010/11/19 05:37:15 When is this true given that there's a TEST_AND_RE
adlr 2010/11/20 02:52:29 i think this may have been an issue w/ a merge. re
+ LOG(INFO) << "current index: " << current_index_;
+ LOG(WARNING) << "Received bytes from invalid fetcher";
+ LOG(WARNING) << (uint64_t)(fetcher) << " exp " << (uint64_t)(fetchers_[current_index_].get());
+ return;
+ }
off_t next_size = length;
if (ranges_[current_index_].second >= 0) {
next_size = std::min(next_size,
@@ -220,7 +239,7 @@ class MultiHttpFetcher : public HttpFetcher, public HttpFetcherDelegate {
bool pending_next_fetcher_;
RangesVect ranges_;
- std::vector<std::tr1::shared_ptr<BaseHttpFetcher> > fetchers_;
+ FetchersVect fetchers_;
RangesVect::size_type current_index_; // index into ranges_, fetchers_
off_t bytes_received_this_fetcher_;

Powered by Google App Engine
This is Rietveld 408576698