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

Side by Side Diff: multi_http_fetcher.h

Issue 4131005: AU: Push seeks in http fetching to the progress percentage. (Closed) Base URL: http://git.chromium.org/git/update_engine.git
Patch Set: fix for review 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « mock_http_fetcher.h ('k') | prefs.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium OS Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CHROMEOS_PLATFORM_UPDATE_ENGINE_MULTI_HTTP_FETCHER_H__ 5 #ifndef CHROMEOS_PLATFORM_UPDATE_ENGINE_MULTI_HTTP_FETCHER_H__
6 #define CHROMEOS_PLATFORM_UPDATE_ENGINE_MULTI_HTTP_FETCHER_H__ 6 #define CHROMEOS_PLATFORM_UPDATE_ENGINE_MULTI_HTTP_FETCHER_H__
7 7
8 #include <tr1/memory> 8 #include <tr1/memory>
9 #include <utility> 9 #include <utility>
10 #include <vector> 10 #include <vector>
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
115 } 115 }
116 116
117 void StartTransfer() { 117 void StartTransfer() {
118 if (current_index_ >= ranges_.size()) { 118 if (current_index_ >= ranges_.size()) {
119 return; 119 return;
120 } 120 }
121 LOG(INFO) << "Starting a transfer @" << ranges_[current_index_].first << "(" 121 LOG(INFO) << "Starting a transfer @" << ranges_[current_index_].first << "("
122 << ranges_[current_index_].second << ")"; 122 << ranges_[current_index_].second << ")";
123 bytes_received_this_fetcher_ = 0; 123 bytes_received_this_fetcher_ = 0;
124 fetchers_[current_index_]->SetOffset(ranges_[current_index_].first); 124 fetchers_[current_index_]->SetOffset(ranges_[current_index_].first);
125 if (delegate_)
126 delegate_->SeekToOffset(ranges_[current_index_].first);
125 fetchers_[current_index_]->BeginTransfer(url_); 127 fetchers_[current_index_]->BeginTransfer(url_);
126 } 128 }
127 129
128 void ReceivedBytes(HttpFetcher* fetcher, 130 void ReceivedBytes(HttpFetcher* fetcher,
129 const char* bytes, 131 const char* bytes,
130 int length) { 132 int length) {
131 if (current_index_ >= ranges_.size()) 133 if (current_index_ >= ranges_.size())
132 return; 134 return;
133 if (fetcher != fetchers_[current_index_].get()) { 135 if (fetcher != fetchers_[current_index_].get()) {
134 LOG(WARNING) << "Received bytes from invalid fetcher"; 136 LOG(WARNING) << "Received bytes from invalid fetcher";
135 return; 137 return;
136 } 138 }
137 off_t next_size = length; 139 off_t next_size = length;
138 if (ranges_[current_index_].second >= 0) { 140 if (ranges_[current_index_].second >= 0) {
139 next_size = std::min(next_size, 141 next_size = std::min(next_size,
140 ranges_[current_index_].second - 142 ranges_[current_index_].second -
141 bytes_received_this_fetcher_); 143 bytes_received_this_fetcher_);
142 } 144 }
143 LOG_IF(WARNING, next_size <= 0) << "Asked to write length <= 0"; 145 LOG_IF(WARNING, next_size <= 0) << "Asked to write length <= 0";
144 if (delegate_) 146 if (delegate_) {
145 delegate_->ReceivedBytes(this, bytes, next_size); 147 delegate_->ReceivedBytes(this, bytes, next_size);
148 }
146 bytes_received_this_fetcher_ += length; 149 bytes_received_this_fetcher_ += length;
147 if (ranges_[current_index_].second >= 0 && 150 if (ranges_[current_index_].second >= 0 &&
148 bytes_received_this_fetcher_ >= ranges_[current_index_].second) { 151 bytes_received_this_fetcher_ >= ranges_[current_index_].second) {
149 fetchers_[current_index_]->TerminateTransfer(); 152 fetchers_[current_index_]->TerminateTransfer();
150 current_index_++; 153 current_index_++;
151 if (current_index_ == ranges_.size()) { 154 if (current_index_ == ranges_.size()) {
152 SendTransferComplete(fetchers_[current_index_ - 1].get(), true); 155 SendTransferComplete(fetchers_[current_index_ - 1].get(), true);
153 } else { 156 } else {
154 StartTransfer(); 157 StartTransfer();
155 } 158 }
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
194 RangesVect::size_type current_index_; // index into ranges_, fetchers_ 197 RangesVect::size_type current_index_; // index into ranges_, fetchers_
195 off_t bytes_received_this_fetcher_; 198 off_t bytes_received_this_fetcher_;
196 199
197 private: 200 private:
198 DISALLOW_COPY_AND_ASSIGN(MultiHttpFetcher); 201 DISALLOW_COPY_AND_ASSIGN(MultiHttpFetcher);
199 }; 202 };
200 203
201 } // namespace chromeos_update_engine 204 } // namespace chromeos_update_engine
202 205
203 #endif // CHROMEOS_PLATFORM_UPDATE_ENGINE_MULTI_HTTP_FETCHER_H__ 206 #endif // CHROMEOS_PLATFORM_UPDATE_ENGINE_MULTI_HTTP_FETCHER_H__
OLDNEW
« no previous file with comments | « mock_http_fetcher.h ('k') | prefs.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698