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

Unified Diff: libcurl_http_fetcher.h

Issue 3591018: AU: MultiHttpFetcher, an HttpFetcher for specific byte ranges (Closed) Base URL: ssh://git@chromiumos-git/update_engine.git
Patch Set: fixes for rewview Created 10 years, 2 months 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
« no previous file with comments | « http_fetcher_unittest.cc ('k') | libcurl_http_fetcher.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: libcurl_http_fetcher.h
diff --git a/libcurl_http_fetcher.h b/libcurl_http_fetcher.h
index 89086382af136941756fdadc66ffef73da21b053..69e794f4df6b2dc51fff005aa24337d0314df789 100644
--- a/libcurl_http_fetcher.h
+++ b/libcurl_http_fetcher.h
@@ -27,13 +27,20 @@ class LibcurlHttpFetcher : public HttpFetcher {
curl_handle_(NULL),
timeout_source_(NULL),
transfer_in_progress_(false),
+ transfer_size_(0),
+ bytes_downloaded_(0),
+ resume_offset_(0),
retry_count_(0),
retry_seconds_(60),
- idle_seconds_(1) {}
+ idle_seconds_(1),
+ in_write_callback_(false),
+ terminate_requested_(false) {}
// Cleans up all internal state. Does not notify delegate
~LibcurlHttpFetcher();
+ void SetOffset(off_t offset) { bytes_downloaded_ = offset; }
+
// Begins the transfer if it hasn't already begun.
virtual void BeginTransfer(const std::string& url);
@@ -62,6 +69,9 @@ class LibcurlHttpFetcher : public HttpFetcher {
void set_retry_seconds(int seconds) { retry_seconds_ = seconds; }
private:
+ // Asks libcurl for the http response code and stores it in the object.
+ void GetHttpResponseCode();
+
// Resumes a transfer where it left off. This will use the
// HTTP Range: header to make a new connection from where the last
// left off.
@@ -135,6 +145,8 @@ class LibcurlHttpFetcher : public HttpFetcher {
// If we resumed an earlier transfer, data offset that we used for the
// new connection. 0 otherwise.
+ // In this class, resume refers to resuming a dropped HTTP connection,
+ // not to resuming an interrupted download.
off_t resume_offset_;
// Number of resumes performed.
@@ -146,6 +158,13 @@ class LibcurlHttpFetcher : public HttpFetcher {
// Seconds to wait before asking libcurl to "perform".
int idle_seconds_;
+ // If true, we are currently performing a write callback on the delegate.
+ bool in_write_callback_;
+
+ // We can't clean everything up while we're in a write callback, so
+ // if we get a terminate request, queue it until we can handle it.
+ bool terminate_requested_;
+
DISALLOW_COPY_AND_ASSIGN(LibcurlHttpFetcher);
};
« no previous file with comments | « http_fetcher_unittest.cc ('k') | libcurl_http_fetcher.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698