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

Unified Diff: 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: http_fetcher.h
diff --git a/http_fetcher.h b/http_fetcher.h
index 6d8608b62996f72d7d198983917471f360dc3913..cb9f0c5d75d9b457e21f572bd6a738b64877c23a 100644
--- a/http_fetcher.h
+++ b/http_fetcher.h
@@ -5,10 +5,15 @@
#ifndef CHROMEOS_PLATFORM_UPDATE_ENGINE_HTTP_FETCHER_H__
#define CHROMEOS_PLATFORM_UPDATE_ENGINE_HTTP_FETCHER_H__
+#include <deque>
#include <string>
#include <vector>
+
#include <glib.h>
-#include "base/basictypes.h"
+#include <base/basictypes.h>
petkov 2010/11/19 05:37:15 sort
adlr 2010/11/20 02:52:29 Done.
+#include <base/logging.h>
+
+#include "update_engine/proxy_resolver.h"
// This class is a simple wrapper around an HTTP library (libcurl). We can
// easily mock out this interface for testing.
@@ -23,10 +28,12 @@ class HttpFetcherDelegate;
class HttpFetcher {
public:
- HttpFetcher()
+ explicit HttpFetcher(ProxyResolver* proxy_resolver)
petkov 2010/11/19 05:37:15 a brief docstring might be useful -- can proxy_res
adlr 2010/11/20 02:52:29 decided to allow NULL and documented it as such.
: post_data_set_(false),
http_response_code_(0),
- delegate_(NULL) {}
+ delegate_(NULL),
+ proxies_(1, kNoProxy),
+ proxy_resolver_(proxy_resolver) {}
virtual ~HttpFetcher() {}
void set_delegate(HttpFetcherDelegate* delegate) { delegate_ = delegate; }
@@ -42,6 +49,28 @@ class HttpFetcher {
post_data_.insert(post_data_.end(), char_data, char_data + size);
}
+ // Proxy methods to set the proxies, then to pop them off.
+ void ResolveProxiesForUrl(const std::string& url) {
+ if (!proxy_resolver_) {
petkov 2010/11/19 05:37:15 Lots of code for a header file. I'd suggest move a
adlr 2010/11/20 02:52:29 Done.
+ LOG(ERROR) << "Missing proxy resolver!";
petkov 2010/11/19 05:37:15 Why an ERROR? Maybe just default to kNoProxy. If n
adlr 2010/11/20 02:52:29 fixed. NULL now legal
+ }
+ std::vector<std::string> proxies;
+ if (!proxy_resolver_->GetProxiesForUrl(url, &proxies)) {
+ // just do direct
+ proxies.push_back(kNoProxy);
+ }
+ SetProxies(proxies);
+ }
+ void SetProxies(const std::vector<std::string>& proxies) {
+ proxies_.clear();
+ proxies_.insert(proxies_.begin(), proxies.begin(), proxies.end());
petkov 2010/11/19 05:37:15 you could probably just proxies_.assign(begin, end
adlr 2010/11/20 02:52:29 Done.
+ }
+ const std::string& CurrentProxy() const {
+ return proxies_.front();
+ }
+ bool HasProxy() const { return !proxies_.empty(); }
+ void PopProxy() { proxies_.pop_front(); }
+
// Downloading should resume from this offset
virtual void SetOffset(off_t offset) = 0;
@@ -84,6 +113,12 @@ class HttpFetcher {
// The delegate; may be NULL.
HttpFetcherDelegate* delegate_;
+
+ // Proxy servers
+ std::deque<std::string> proxies_;
+
+ ProxyResolver* const proxy_resolver_;
+
private:
DISALLOW_COPY_AND_ASSIGN(HttpFetcher);
};
« no previous file with comments | « download_action_unittest.cc ('k') | http_fetcher_unittest.cc » ('j') | libcurl_http_fetcher.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698