Chromium Code Reviews

Side by Side Diff: net/http/disk_cache_based_quic_server_info.cc

Issue 773373002: Update from https://crrev.com/306706 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff |
« no previous file with comments | « net/base/mime_util_unittest.cc ('k') | net/http/http_cache_transaction.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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/http/disk_cache_based_quic_server_info.h" 5 #include "net/http/disk_cache_based_quic_server_info.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/callback.h" 8 #include "base/callback.h"
9 #include "base/callback_helpers.h" 9 #include "base/callback_helpers.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 120 matching lines...)
131 // Handle updates while a write is pending or if we haven't loaded from disk 131 // Handle updates while a write is pending or if we haven't loaded from disk
132 // cache. Save the data to be written into a temporary buffer and then 132 // cache. Save the data to be written into a temporary buffer and then
133 // persist that data when we are ready to persist. 133 // persist that data when we are ready to persist.
134 pending_write_data_ = Serialize(); 134 pending_write_data_ = Serialize();
135 return; 135 return;
136 } 136 }
137 PersistInternal(); 137 PersistInternal();
138 } 138 }
139 139
140 void DiskCacheBasedQuicServerInfo::PersistInternal() { 140 void DiskCacheBasedQuicServerInfo::PersistInternal() {
141 // TODO(vadimt): Remove ScopedTracker below once crbug.com/422516 is fixed.
142 tracked_objects::ScopedTracker tracking_profile(
143 FROM_HERE_WITH_EXPLICIT_FUNCTION(
144 "422516 DiskCacheBasedQuicServerInfo::PersistInternal"));
145
141 DCHECK(CalledOnValidThread()); 146 DCHECK(CalledOnValidThread());
142 DCHECK_NE(GET_BACKEND, state_); 147 DCHECK_NE(GET_BACKEND, state_);
143 DCHECK(new_data_.empty()); 148 DCHECK(new_data_.empty());
144 CHECK(ready_); 149 CHECK(ready_);
145 DCHECK(wait_for_ready_callback_.is_null()); 150 DCHECK(wait_for_ready_callback_.is_null());
146 151
147 if (pending_write_data_.empty()) { 152 if (pending_write_data_.empty()) {
148 new_data_ = Serialize(); 153 new_data_ = Serialize();
149 } else { 154 } else {
150 new_data_ = pending_write_data_; 155 new_data_ = pending_write_data_;
(...skipping 97 matching lines...)
248 default: 253 default:
249 rv = OK; 254 rv = OK;
250 NOTREACHED(); 255 NOTREACHED();
251 } 256 }
252 } while (rv != ERR_IO_PENDING && state_ != NONE); 257 } while (rv != ERR_IO_PENDING && state_ != NONE);
253 258
254 return rv; 259 return rv;
255 } 260 }
256 261
257 int DiskCacheBasedQuicServerInfo::DoGetBackendComplete(int rv) { 262 int DiskCacheBasedQuicServerInfo::DoGetBackendComplete(int rv) {
263 // TODO(vadimt): Remove ScopedTracker below once crbug.com/422516 is fixed.
264 tracked_objects::ScopedTracker tracking_profile(
265 FROM_HERE_WITH_EXPLICIT_FUNCTION(
266 "422516 DiskCacheBasedQuicServerInfo::DoGetBackendComplete"));
267
258 if (rv == OK) { 268 if (rv == OK) {
259 backend_ = data_shim_->backend; 269 backend_ = data_shim_->backend;
260 state_ = OPEN; 270 state_ = OPEN;
261 } else { 271 } else {
262 RecordQuicServerInfoFailure(GET_BACKEND_FAILURE); 272 RecordQuicServerInfoFailure(GET_BACKEND_FAILURE);
263 state_ = WAIT_FOR_DATA_READY_DONE; 273 state_ = WAIT_FOR_DATA_READY_DONE;
264 } 274 }
265 return OK; 275 return OK;
266 } 276 }
267 277
268 int DiskCacheBasedQuicServerInfo::DoOpenComplete(int rv) { 278 int DiskCacheBasedQuicServerInfo::DoOpenComplete(int rv) {
279 // TODO(vadimt): Remove ScopedTracker below once crbug.com/422516 is fixed.
280 tracked_objects::ScopedTracker tracking_profile(
281 FROM_HERE_WITH_EXPLICIT_FUNCTION(
282 "422516 DiskCacheBasedQuicServerInfo::DoOpenComplete"));
283
269 if (rv == OK) { 284 if (rv == OK) {
270 entry_ = data_shim_->entry; 285 entry_ = data_shim_->entry;
271 state_ = READ; 286 state_ = READ;
272 found_entry_ = true; 287 found_entry_ = true;
273 } else { 288 } else {
274 RecordQuicServerInfoFailure(OPEN_FAILURE); 289 RecordQuicServerInfoFailure(OPEN_FAILURE);
275 state_ = WAIT_FOR_DATA_READY_DONE; 290 state_ = WAIT_FOR_DATA_READY_DONE;
276 } 291 }
277 292
278 return OK; 293 return OK;
279 } 294 }
280 295
281 int DiskCacheBasedQuicServerInfo::DoReadComplete(int rv) { 296 int DiskCacheBasedQuicServerInfo::DoReadComplete(int rv) {
297 // TODO(vadimt): Remove ScopedTracker below once crbug.com/422516 is fixed.
298 tracked_objects::ScopedTracker tracking_profile(
299 FROM_HERE_WITH_EXPLICIT_FUNCTION(
300 "422516 DiskCacheBasedQuicServerInfo::DoReadComplete"));
301
282 if (rv > 0) 302 if (rv > 0)
283 data_.assign(read_buffer_->data(), rv); 303 data_.assign(read_buffer_->data(), rv);
284 else if (rv < 0) 304 else if (rv < 0)
285 RecordQuicServerInfoFailure(READ_FAILURE); 305 RecordQuicServerInfoFailure(READ_FAILURE);
286 306
287 state_ = WAIT_FOR_DATA_READY_DONE; 307 state_ = WAIT_FOR_DATA_READY_DONE;
288 return OK; 308 return OK;
289 } 309 }
290 310
291 int DiskCacheBasedQuicServerInfo::DoWriteComplete(int rv) { 311 int DiskCacheBasedQuicServerInfo::DoWriteComplete(int rv) {
312 // TODO(vadimt): Remove ScopedTracker below once crbug.com/422516 is fixed.
313 tracked_objects::ScopedTracker tracking_profile(
314 FROM_HERE_WITH_EXPLICIT_FUNCTION(
315 "422516 DiskCacheBasedQuicServerInfo::DoWriteComplete"));
316
292 if (rv < 0) 317 if (rv < 0)
293 RecordQuicServerInfoFailure(WRITE_FAILURE); 318 RecordQuicServerInfoFailure(WRITE_FAILURE);
294 state_ = SET_DONE; 319 state_ = SET_DONE;
295 return OK; 320 return OK;
296 } 321 }
297 322
298 int DiskCacheBasedQuicServerInfo::DoCreateOrOpenComplete(int rv) { 323 int DiskCacheBasedQuicServerInfo::DoCreateOrOpenComplete(int rv) {
324 // TODO(vadimt): Remove ScopedTracker below once crbug.com/422516 is fixed.
325 tracked_objects::ScopedTracker tracking_profile(
326 FROM_HERE_WITH_EXPLICIT_FUNCTION(
327 "422516 DiskCacheBasedQuicServerInfo::DoCreateOrOpenComplete"));
328
299 if (rv != OK) { 329 if (rv != OK) {
300 RecordQuicServerInfoFailure(CREATE_OR_OPEN_FAILURE); 330 RecordQuicServerInfoFailure(CREATE_OR_OPEN_FAILURE);
301 state_ = SET_DONE; 331 state_ = SET_DONE;
302 } else { 332 } else {
303 if (!entry_) { 333 if (!entry_) {
304 entry_ = data_shim_->entry; 334 entry_ = data_shim_->entry;
305 found_entry_ = true; 335 found_entry_ = true;
306 } 336 }
307 DCHECK(entry_); 337 DCHECK(entry_);
308 state_ = WRITE; 338 state_ = WRITE;
309 } 339 }
310 return OK; 340 return OK;
311 } 341 }
312 342
313 int DiskCacheBasedQuicServerInfo::DoGetBackend() { 343 int DiskCacheBasedQuicServerInfo::DoGetBackend() {
344 // TODO(vadimt): Remove ScopedTracker below once crbug.com/422516 is fixed.
345 tracked_objects::ScopedTracker tracking_profile(
346 FROM_HERE_WITH_EXPLICIT_FUNCTION(
347 "422516 DiskCacheBasedQuicServerInfo::DoGetBackend"));
348
314 state_ = GET_BACKEND_COMPLETE; 349 state_ = GET_BACKEND_COMPLETE;
315 return http_cache_->GetBackend(&data_shim_->backend, io_callback_); 350 return http_cache_->GetBackend(&data_shim_->backend, io_callback_);
316 } 351 }
317 352
318 int DiskCacheBasedQuicServerInfo::DoOpen() { 353 int DiskCacheBasedQuicServerInfo::DoOpen() {
354 // TODO(vadimt): Remove ScopedTracker below once crbug.com/422516 is fixed.
355 tracked_objects::ScopedTracker tracking_profile(
356 FROM_HERE_WITH_EXPLICIT_FUNCTION(
357 "422516 DiskCacheBasedQuicServerInfo::DoOpen"));
358
319 state_ = OPEN_COMPLETE; 359 state_ = OPEN_COMPLETE;
320 return backend_->OpenEntry(key(), &data_shim_->entry, io_callback_); 360 return backend_->OpenEntry(key(), &data_shim_->entry, io_callback_);
321 } 361 }
322 362
323 int DiskCacheBasedQuicServerInfo::DoRead() { 363 int DiskCacheBasedQuicServerInfo::DoRead() {
364 // TODO(vadimt): Remove ScopedTracker below once crbug.com/422516 is fixed.
365 tracked_objects::ScopedTracker tracking_profile(
366 FROM_HERE_WITH_EXPLICIT_FUNCTION(
367 "422516 DiskCacheBasedQuicServerInfo::DoRead"));
368
324 const int32 size = entry_->GetDataSize(0 /* index */); 369 const int32 size = entry_->GetDataSize(0 /* index */);
325 if (!size) { 370 if (!size) {
326 state_ = WAIT_FOR_DATA_READY_DONE; 371 state_ = WAIT_FOR_DATA_READY_DONE;
327 return OK; 372 return OK;
328 } 373 }
329 374
330 read_buffer_ = new IOBuffer(size); 375 read_buffer_ = new IOBuffer(size);
331 state_ = READ_COMPLETE; 376 state_ = READ_COMPLETE;
332 return entry_->ReadData( 377 return entry_->ReadData(
333 0 /* index */, 0 /* offset */, read_buffer_.get(), size, io_callback_); 378 0 /* index */, 0 /* offset */, read_buffer_.get(), size, io_callback_);
334 } 379 }
335 380
336 int DiskCacheBasedQuicServerInfo::DoWrite() { 381 int DiskCacheBasedQuicServerInfo::DoWrite() {
382 // TODO(vadimt): Remove ScopedTracker below once crbug.com/422516 is fixed.
383 tracked_objects::ScopedTracker tracking_profile(
384 FROM_HERE_WITH_EXPLICIT_FUNCTION(
385 "422516 DiskCacheBasedQuicServerInfo::DoWrite"));
386
337 write_buffer_ = new IOBuffer(new_data_.size()); 387 write_buffer_ = new IOBuffer(new_data_.size());
338 memcpy(write_buffer_->data(), new_data_.data(), new_data_.size()); 388 memcpy(write_buffer_->data(), new_data_.data(), new_data_.size());
339 state_ = WRITE_COMPLETE; 389 state_ = WRITE_COMPLETE;
340 390
341 return entry_->WriteData(0 /* index */, 391 return entry_->WriteData(0 /* index */,
342 0 /* offset */, 392 0 /* offset */,
343 write_buffer_.get(), 393 write_buffer_.get(),
344 new_data_.size(), 394 new_data_.size(),
345 io_callback_, 395 io_callback_,
346 true /* truncate */); 396 true /* truncate */);
347 } 397 }
348 398
349 int DiskCacheBasedQuicServerInfo::DoCreateOrOpen() { 399 int DiskCacheBasedQuicServerInfo::DoCreateOrOpen() {
400 // TODO(vadimt): Remove ScopedTracker below once crbug.com/422516 is fixed.
401 tracked_objects::ScopedTracker tracking_profile(
402 FROM_HERE_WITH_EXPLICIT_FUNCTION(
403 "422516 DiskCacheBasedQuicServerInfo::DoCreateOrOpen"));
404
350 state_ = CREATE_OR_OPEN_COMPLETE; 405 state_ = CREATE_OR_OPEN_COMPLETE;
351 if (entry_) 406 if (entry_)
352 return OK; 407 return OK;
353 408
354 if (found_entry_) { 409 if (found_entry_) {
355 return backend_->OpenEntry(key(), &data_shim_->entry, io_callback_); 410 return backend_->OpenEntry(key(), &data_shim_->entry, io_callback_);
356 } 411 }
357 412
358 return backend_->CreateEntry(key(), &data_shim_->entry, io_callback_); 413 return backend_->CreateEntry(key(), &data_shim_->entry, io_callback_);
359 } 414 }
360 415
361 int DiskCacheBasedQuicServerInfo::DoWaitForDataReadyDone() { 416 int DiskCacheBasedQuicServerInfo::DoWaitForDataReadyDone() {
417 // TODO(vadimt): Remove ScopedTracker below once crbug.com/422516 is fixed.
418 tracked_objects::ScopedTracker tracking_profile(
419 FROM_HERE_WITH_EXPLICIT_FUNCTION(
420 "422516 DiskCacheBasedQuicServerInfo::DoWaitForDataReadyDone"));
421
362 DCHECK(!ready_); 422 DCHECK(!ready_);
363 state_ = NONE; 423 state_ = NONE;
364 ready_ = true; 424 ready_ = true;
365 // We close the entry because, if we shutdown before ::Persist is called, 425 // We close the entry because, if we shutdown before ::Persist is called,
366 // then we might leak a cache reference, which causes a DCHECK on shutdown. 426 // then we might leak a cache reference, which causes a DCHECK on shutdown.
367 if (entry_) 427 if (entry_)
368 entry_->Close(); 428 entry_->Close();
369 entry_ = NULL; 429 entry_ = NULL;
370 430
371 RecordQuicServerInfoStatus(QUIC_SERVER_INFO_PARSE); 431 RecordQuicServerInfoStatus(QUIC_SERVER_INFO_PARSE);
(...skipping 51 matching lines...)
423 } else if (backend_->GetCacheType() == net::MEMORY_CACHE) { 483 } else if (backend_->GetCacheType() == net::MEMORY_CACHE) {
424 UMA_HISTOGRAM_ENUMERATION("Net.QuicDiskCache.FailureReason.MemoryCache", 484 UMA_HISTOGRAM_ENUMERATION("Net.QuicDiskCache.FailureReason.MemoryCache",
425 failure, NUM_OF_FAILURES); 485 failure, NUM_OF_FAILURES);
426 } else { 486 } else {
427 UMA_HISTOGRAM_ENUMERATION("Net.QuicDiskCache.FailureReason.DiskCache", 487 UMA_HISTOGRAM_ENUMERATION("Net.QuicDiskCache.FailureReason.DiskCache",
428 failure, NUM_OF_FAILURES); 488 failure, NUM_OF_FAILURES);
429 } 489 }
430 } 490 }
431 491
432 } // namespace net 492 } // namespace net
OLDNEW
« no previous file with comments | « net/base/mime_util_unittest.cc ('k') | net/http/http_cache_transaction.cc » ('j') | no next file with comments »

Powered by Google App Engine