| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium 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 #include "net/disk_cache/blockfile/in_flight_backend_io.h" | 5 #include "net/disk_cache/blockfile/in_flight_backend_io.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/bind_helpers.h" | 8 #include "base/bind_helpers.h" |
| 9 #include "base/compiler_specific.h" | 9 #include "base/compiler_specific.h" |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| 11 #include "base/single_thread_task_runner.h" | 11 #include "base/single_thread_task_runner.h" |
| 12 #include "net/base/net_errors.h" | 12 #include "net/base/net_errors.h" |
| 13 #include "net/disk_cache/blockfile/backend_impl.h" | 13 #include "net/disk_cache/blockfile/backend_impl.h" |
| 14 #include "net/disk_cache/blockfile/entry_impl.h" | 14 #include "net/disk_cache/blockfile/entry_impl.h" |
| 15 #include "net/disk_cache/blockfile/histogram_macros.h" | 15 #include "net/disk_cache/blockfile/histogram_macros.h" |
| 16 | 16 |
| 17 // Provide a BackendImpl object to macros from histogram_macros.h. | 17 // Provide a BackendImpl object to macros from histogram_macros.h. |
| 18 #define CACHE_UMA_BACKEND_IMPL_OBJ backend_ | 18 #define CACHE_UMA_BACKEND_IMPL_OBJ backend_ |
| 19 | 19 |
| 20 namespace disk_cache { | 20 namespace disk_cache { |
| 21 | 21 |
| 22 BackendIO::BackendIO(InFlightIO* controller, BackendImpl* backend, | 22 BackendIO::BackendIO(InFlightIO* controller, BackendImpl* backend, |
| 23 const net::CompletionCallback& callback) | 23 const net::CompletionCallback& callback) |
| 24 : BackgroundIO(controller), | 24 : BackgroundIO(controller), |
| 25 backend_(backend), | 25 backend_(backend), |
| 26 callback_(callback), | 26 callback_(callback), |
| 27 operation_(OP_NONE), | 27 operation_(OP_NONE), |
| 28 entry_ptr_(NULL), | 28 entry_ptr_(NULL), |
| 29 iter_ptr_(NULL), | 29 iterator_(NULL), |
| 30 iter_(NULL), | |
| 31 entry_(NULL), | 30 entry_(NULL), |
| 32 index_(0), | 31 index_(0), |
| 33 offset_(0), | 32 offset_(0), |
| 34 buf_len_(0), | 33 buf_len_(0), |
| 35 truncate_(false), | 34 truncate_(false), |
| 36 offset64_(0), | 35 offset64_(0), |
| 37 start_(NULL) { | 36 start_(NULL) { |
| 38 start_time_ = base::TimeTicks::Now(); | 37 start_time_ = base::TimeTicks::Now(); |
| 39 } | 38 } |
| 40 | 39 |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 109 operation_ = OP_DOOM_BETWEEN; | 108 operation_ = OP_DOOM_BETWEEN; |
| 110 initial_time_ = initial_time; | 109 initial_time_ = initial_time; |
| 111 end_time_ = end_time; | 110 end_time_ = end_time; |
| 112 } | 111 } |
| 113 | 112 |
| 114 void BackendIO::DoomEntriesSince(const base::Time initial_time) { | 113 void BackendIO::DoomEntriesSince(const base::Time initial_time) { |
| 115 operation_ = OP_DOOM_SINCE; | 114 operation_ = OP_DOOM_SINCE; |
| 116 initial_time_ = initial_time; | 115 initial_time_ = initial_time; |
| 117 } | 116 } |
| 118 | 117 |
| 119 void BackendIO::OpenNextEntry(void** iter, Entry** next_entry) { | 118 void BackendIO::OpenNextEntry(Rankings::Iterator* iterator, |
| 119 Entry** next_entry) { |
| 120 operation_ = OP_OPEN_NEXT; | 120 operation_ = OP_OPEN_NEXT; |
| 121 iter_ptr_ = iter; | 121 iterator_ = iterator; |
| 122 entry_ptr_ = next_entry; | 122 entry_ptr_ = next_entry; |
| 123 } | 123 } |
| 124 | 124 |
| 125 void BackendIO::EndEnumeration(void* iterator) { | 125 void BackendIO::EndEnumeration(scoped_ptr<Rankings::Iterator> iterator) { |
| 126 operation_ = OP_END_ENUMERATION; | 126 operation_ = OP_END_ENUMERATION; |
| 127 iter_ = iterator; | 127 scoped_iterator_ = iterator.Pass(); |
| 128 } | 128 } |
| 129 | 129 |
| 130 void BackendIO::OnExternalCacheHit(const std::string& key) { | 130 void BackendIO::OnExternalCacheHit(const std::string& key) { |
| 131 operation_ = OP_ON_EXTERNAL_CACHE_HIT; | 131 operation_ = OP_ON_EXTERNAL_CACHE_HIT; |
| 132 key_ = key; | 132 key_ = key; |
| 133 } | 133 } |
| 134 | 134 |
| 135 void BackendIO::CloseEntryImpl(EntryImpl* entry) { | 135 void BackendIO::CloseEntryImpl(EntryImpl* entry) { |
| 136 operation_ = OP_CLOSE_ENTRY; | 136 operation_ = OP_CLOSE_ENTRY; |
| 137 entry_ = entry; | 137 entry_ = entry; |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 238 case OP_DOOM_ALL: | 238 case OP_DOOM_ALL: |
| 239 result_ = backend_->SyncDoomAllEntries(); | 239 result_ = backend_->SyncDoomAllEntries(); |
| 240 break; | 240 break; |
| 241 case OP_DOOM_BETWEEN: | 241 case OP_DOOM_BETWEEN: |
| 242 result_ = backend_->SyncDoomEntriesBetween(initial_time_, end_time_); | 242 result_ = backend_->SyncDoomEntriesBetween(initial_time_, end_time_); |
| 243 break; | 243 break; |
| 244 case OP_DOOM_SINCE: | 244 case OP_DOOM_SINCE: |
| 245 result_ = backend_->SyncDoomEntriesSince(initial_time_); | 245 result_ = backend_->SyncDoomEntriesSince(initial_time_); |
| 246 break; | 246 break; |
| 247 case OP_OPEN_NEXT: | 247 case OP_OPEN_NEXT: |
| 248 result_ = backend_->SyncOpenNextEntry(iter_ptr_, entry_ptr_); | 248 result_ = backend_->SyncOpenNextEntry(iterator_, entry_ptr_); |
| 249 break; | 249 break; |
| 250 case OP_END_ENUMERATION: | 250 case OP_END_ENUMERATION: |
| 251 backend_->SyncEndEnumeration(iter_); | 251 backend_->SyncEndEnumeration(scoped_iterator_.Pass()); |
| 252 result_ = net::OK; | 252 result_ = net::OK; |
| 253 break; | 253 break; |
| 254 case OP_ON_EXTERNAL_CACHE_HIT: | 254 case OP_ON_EXTERNAL_CACHE_HIT: |
| 255 backend_->SyncOnExternalCacheHit(key_); | 255 backend_->SyncOnExternalCacheHit(key_); |
| 256 result_ = net::OK; | 256 result_ = net::OK; |
| 257 break; | 257 break; |
| 258 case OP_CLOSE_ENTRY: | 258 case OP_CLOSE_ENTRY: |
| 259 entry_->Release(); | 259 entry_->Release(); |
| 260 result_ = net::OK; | 260 result_ = net::OK; |
| 261 break; | 261 break; |
| (...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 375 PostOperation(operation.get()); | 375 PostOperation(operation.get()); |
| 376 } | 376 } |
| 377 | 377 |
| 378 void InFlightBackendIO::DoomEntriesSince( | 378 void InFlightBackendIO::DoomEntriesSince( |
| 379 const base::Time initial_time, const net::CompletionCallback& callback) { | 379 const base::Time initial_time, const net::CompletionCallback& callback) { |
| 380 scoped_refptr<BackendIO> operation(new BackendIO(this, backend_, callback)); | 380 scoped_refptr<BackendIO> operation(new BackendIO(this, backend_, callback)); |
| 381 operation->DoomEntriesSince(initial_time); | 381 operation->DoomEntriesSince(initial_time); |
| 382 PostOperation(operation.get()); | 382 PostOperation(operation.get()); |
| 383 } | 383 } |
| 384 | 384 |
| 385 void InFlightBackendIO::OpenNextEntry(void** iter, Entry** next_entry, | 385 void InFlightBackendIO::OpenNextEntry(Rankings::Iterator* iterator, |
| 386 Entry** next_entry, |
| 386 const net::CompletionCallback& callback) { | 387 const net::CompletionCallback& callback) { |
| 387 scoped_refptr<BackendIO> operation(new BackendIO(this, backend_, callback)); | 388 scoped_refptr<BackendIO> operation(new BackendIO(this, backend_, callback)); |
| 388 operation->OpenNextEntry(iter, next_entry); | 389 operation->OpenNextEntry(iterator, next_entry); |
| 389 PostOperation(operation.get()); | 390 PostOperation(operation.get()); |
| 390 } | 391 } |
| 391 | 392 |
| 392 void InFlightBackendIO::EndEnumeration(void* iterator) { | 393 void InFlightBackendIO::EndEnumeration( |
| 394 scoped_ptr<Rankings::Iterator> iterator) { |
| 393 scoped_refptr<BackendIO> operation( | 395 scoped_refptr<BackendIO> operation( |
| 394 new BackendIO(this, backend_, net::CompletionCallback())); | 396 new BackendIO(this, backend_, net::CompletionCallback())); |
| 395 operation->EndEnumeration(iterator); | 397 operation->EndEnumeration(iterator.Pass()); |
| 396 PostOperation(operation.get()); | 398 PostOperation(operation.get()); |
| 397 } | 399 } |
| 398 | 400 |
| 399 void InFlightBackendIO::OnExternalCacheHit(const std::string& key) { | 401 void InFlightBackendIO::OnExternalCacheHit(const std::string& key) { |
| 400 scoped_refptr<BackendIO> operation( | 402 scoped_refptr<BackendIO> operation( |
| 401 new BackendIO(this, backend_, net::CompletionCallback())); | 403 new BackendIO(this, backend_, net::CompletionCallback())); |
| 402 operation->OnExternalCacheHit(key); | 404 operation->OnExternalCacheHit(key); |
| 403 PostOperation(operation.get()); | 405 PostOperation(operation.get()); |
| 404 } | 406 } |
| 405 | 407 |
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 502 background_thread_->PostTask( | 504 background_thread_->PostTask( |
| 503 FROM_HERE, base::Bind(&BackendIO::ExecuteOperation, operation)); | 505 FROM_HERE, base::Bind(&BackendIO::ExecuteOperation, operation)); |
| 504 OnOperationPosted(operation); | 506 OnOperationPosted(operation); |
| 505 } | 507 } |
| 506 | 508 |
| 507 base::WeakPtr<InFlightBackendIO> InFlightBackendIO::GetWeakPtr() { | 509 base::WeakPtr<InFlightBackendIO> InFlightBackendIO::GetWeakPtr() { |
| 508 return ptr_factory_.GetWeakPtr(); | 510 return ptr_factory_.GetWeakPtr(); |
| 509 } | 511 } |
| 510 | 512 |
| 511 } // namespace | 513 } // namespace |
| OLD | NEW |