| OLD | NEW |
| 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 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 66 void Pause() { | 66 void Pause() { |
| 67 if (current_index_ < fetchers_.size()) | 67 if (current_index_ < fetchers_.size()) |
| 68 fetchers_[current_index_]->Pause(); | 68 fetchers_[current_index_]->Pause(); |
| 69 } | 69 } |
| 70 | 70 |
| 71 void Unpause() { | 71 void Unpause() { |
| 72 if (current_index_ < fetchers_.size()) | 72 if (current_index_ < fetchers_.size()) |
| 73 fetchers_[current_index_]->Unpause(); | 73 fetchers_[current_index_]->Unpause(); |
| 74 } | 74 } |
| 75 | 75 |
| 76 // These two function are overloaded in LibcurlHttp fetcher to speed | 76 // These functions are overloaded in LibcurlHttp fetcher for testing purposes. |
| 77 // testing. | |
| 78 void set_idle_seconds(int seconds) { | 77 void set_idle_seconds(int seconds) { |
| 79 for (typename std::vector<std::tr1::shared_ptr<BaseHttpFetcher> >::iterator | 78 for (typename std::vector<std::tr1::shared_ptr<BaseHttpFetcher> >::iterator |
| 80 it = fetchers_.begin(), | 79 it = fetchers_.begin(), |
| 81 e = fetchers_.end(); it != e; ++it) { | 80 e = fetchers_.end(); it != e; ++it) { |
| 82 (*it)->set_idle_seconds(seconds); | 81 (*it)->set_idle_seconds(seconds); |
| 83 } | 82 } |
| 84 } | 83 } |
| 85 void set_retry_seconds(int seconds) { | 84 void set_retry_seconds(int seconds) { |
| 86 for (typename std::vector<std::tr1::shared_ptr<BaseHttpFetcher> >::iterator | 85 for (typename std::vector<std::tr1::shared_ptr<BaseHttpFetcher> >::iterator |
| 87 it = fetchers_.begin(), | 86 it = fetchers_.begin(), |
| 88 e = fetchers_.end(); it != e; ++it) { | 87 e = fetchers_.end(); it != e; ++it) { |
| 89 (*it)->set_retry_seconds(seconds); | 88 (*it)->set_retry_seconds(seconds); |
| 90 } | 89 } |
| 91 } | 90 } |
| 91 void SetConnectionAsExpensive(bool is_expensive) { |
| 92 for (typename std::vector<std::tr1::shared_ptr<BaseHttpFetcher> >::iterator |
| 93 it = fetchers_.begin(), |
| 94 e = fetchers_.end(); it != e; ++it) { |
| 95 (*it)->SetConnectionAsExpensive(is_expensive); |
| 96 } |
| 97 } |
| 98 void SetBuildType(bool is_official) { |
| 99 for (typename std::vector<std::tr1::shared_ptr<BaseHttpFetcher> >::iterator |
| 100 it = fetchers_.begin(), |
| 101 e = fetchers_.end(); it != e; ++it) { |
| 102 (*it)->SetBuildType(is_official); |
| 103 } |
| 104 } |
| 92 | 105 |
| 93 private: | 106 private: |
| 94 void SendTransferComplete(HttpFetcher* fetcher, bool successful) { | 107 void SendTransferComplete(HttpFetcher* fetcher, bool successful) { |
| 95 if (sent_transfer_complete_) | 108 if (sent_transfer_complete_) |
| 96 return; | 109 return; |
| 97 LOG(INFO) << "Sending transfer complete"; | 110 LOG(INFO) << "Sending transfer complete"; |
| 98 sent_transfer_complete_ = true; | 111 sent_transfer_complete_ = true; |
| 99 http_response_code_ = fetcher->http_response_code(); | 112 http_response_code_ = fetcher->http_response_code(); |
| 100 if (delegate_) | 113 if (delegate_) |
| 101 delegate_->TransferComplete(this, successful); | 114 delegate_->TransferComplete(this, successful); |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 166 LOG(WARNING) << "Received insufficient bytes from fetcher. " | 179 LOG(WARNING) << "Received insufficient bytes from fetcher. " |
| 167 << "Ending early"; | 180 << "Ending early"; |
| 168 SendTransferComplete(fetcher, false); | 181 SendTransferComplete(fetcher, false); |
| 169 return; | 182 return; |
| 170 } else { | 183 } else { |
| 171 LOG(INFO) << "Got spurious TransferComplete. Ingoring."; | 184 LOG(INFO) << "Got spurious TransferComplete. Ingoring."; |
| 172 } | 185 } |
| 173 } | 186 } |
| 174 | 187 |
| 175 // If true, do not send any more data or TransferComplete to the delegate. | 188 // If true, do not send any more data or TransferComplete to the delegate. |
| 176 bool sent_transfer_complete_; | 189 bool sent_transfer_complete_; |
| 177 | 190 |
| 178 RangesVect ranges_; | 191 RangesVect ranges_; |
| 179 std::vector<std::tr1::shared_ptr<BaseHttpFetcher> > fetchers_; | 192 std::vector<std::tr1::shared_ptr<BaseHttpFetcher> > fetchers_; |
| 180 | 193 |
| 181 RangesVect::size_type current_index_; // index into ranges_, fetchers_ | 194 RangesVect::size_type current_index_; // index into ranges_, fetchers_ |
| 182 off_t bytes_received_this_fetcher_; | 195 off_t bytes_received_this_fetcher_; |
| 183 | 196 |
| 184 private: | 197 private: |
| 185 DISALLOW_COPY_AND_ASSIGN(MultiHttpFetcher); | 198 DISALLOW_COPY_AND_ASSIGN(MultiHttpFetcher); |
| 186 }; | 199 }; |
| 187 | 200 |
| 188 } // namespace chromeos_update_engine | 201 } // namespace chromeos_update_engine |
| 189 | 202 |
| 190 #endif // CHROMEOS_PLATFORM_UPDATE_ENGINE_MULTI_HTTP_FETCHER_H__ | 203 #endif // CHROMEOS_PLATFORM_UPDATE_ENGINE_MULTI_HTTP_FETCHER_H__ |
| OLD | NEW |