OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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/in_flight_backend_io.h" | 5 #include "net/disk_cache/in_flight_backend_io.h" |
6 | 6 |
7 #include "base/compiler_specific.h" | 7 #include "base/compiler_specific.h" |
8 #include "base/logging.h" | 8 #include "base/logging.h" |
9 #include "net/base/net_errors.h" | 9 #include "net/base/net_errors.h" |
10 #include "net/disk_cache/backend_impl.h" | 10 #include "net/disk_cache/backend_impl.h" |
(...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
284 base::MessageLoopProxy* background_thread) | 284 base::MessageLoopProxy* background_thread) |
285 : backend_(backend), | 285 : backend_(backend), |
286 background_thread_(background_thread), | 286 background_thread_(background_thread), |
287 queue_entry_ops_(false) { | 287 queue_entry_ops_(false) { |
288 } | 288 } |
289 | 289 |
290 InFlightBackendIO::~InFlightBackendIO() { | 290 InFlightBackendIO::~InFlightBackendIO() { |
291 } | 291 } |
292 | 292 |
293 void InFlightBackendIO::Init(CompletionCallback* callback) { | 293 void InFlightBackendIO::Init(CompletionCallback* callback) { |
294 scoped_refptr<BackendIO> operation = new BackendIO(this, backend_, callback); | 294 scoped_refptr<BackendIO> operation(new BackendIO(this, backend_, callback)); |
295 operation->Init(); | 295 operation->Init(); |
296 QueueOperation(operation); | 296 QueueOperation(operation); |
297 } | 297 } |
298 | 298 |
299 void InFlightBackendIO::OpenEntry(const std::string& key, Entry** entry, | 299 void InFlightBackendIO::OpenEntry(const std::string& key, Entry** entry, |
300 CompletionCallback* callback) { | 300 CompletionCallback* callback) { |
301 scoped_refptr<BackendIO> operation = new BackendIO(this, backend_, callback); | 301 scoped_refptr<BackendIO> operation(new BackendIO(this, backend_, callback)); |
302 operation->OpenEntry(key, entry); | 302 operation->OpenEntry(key, entry); |
303 QueueOperation(operation); | 303 QueueOperation(operation); |
304 } | 304 } |
305 | 305 |
306 void InFlightBackendIO::CreateEntry(const std::string& key, Entry** entry, | 306 void InFlightBackendIO::CreateEntry(const std::string& key, Entry** entry, |
307 CompletionCallback* callback) { | 307 CompletionCallback* callback) { |
308 scoped_refptr<BackendIO> operation = new BackendIO(this, backend_, callback); | 308 scoped_refptr<BackendIO> operation(new BackendIO(this, backend_, callback)); |
309 operation->CreateEntry(key, entry); | 309 operation->CreateEntry(key, entry); |
310 QueueOperation(operation); | 310 QueueOperation(operation); |
311 } | 311 } |
312 | 312 |
313 void InFlightBackendIO::DoomEntry(const std::string& key, | 313 void InFlightBackendIO::DoomEntry(const std::string& key, |
314 CompletionCallback* callback) { | 314 CompletionCallback* callback) { |
315 scoped_refptr<BackendIO> operation = new BackendIO(this, backend_, callback); | 315 scoped_refptr<BackendIO> operation(new BackendIO(this, backend_, callback)); |
316 operation->DoomEntry(key); | 316 operation->DoomEntry(key); |
317 QueueOperation(operation); | 317 QueueOperation(operation); |
318 } | 318 } |
319 | 319 |
320 void InFlightBackendIO::DoomAllEntries(CompletionCallback* callback) { | 320 void InFlightBackendIO::DoomAllEntries(CompletionCallback* callback) { |
321 scoped_refptr<BackendIO> operation = new BackendIO(this, backend_, callback); | 321 scoped_refptr<BackendIO> operation(new BackendIO(this, backend_, callback)); |
322 operation->DoomAllEntries(); | 322 operation->DoomAllEntries(); |
323 QueueOperation(operation); | 323 QueueOperation(operation); |
324 } | 324 } |
325 | 325 |
326 void InFlightBackendIO::DoomEntriesBetween(const base::Time initial_time, | 326 void InFlightBackendIO::DoomEntriesBetween(const base::Time initial_time, |
327 const base::Time end_time, | 327 const base::Time end_time, |
328 CompletionCallback* callback) { | 328 CompletionCallback* callback) { |
329 scoped_refptr<BackendIO> operation = new BackendIO(this, backend_, callback); | 329 scoped_refptr<BackendIO> operation(new BackendIO(this, backend_, callback)); |
330 operation->DoomEntriesBetween(initial_time, end_time); | 330 operation->DoomEntriesBetween(initial_time, end_time); |
331 QueueOperation(operation); | 331 QueueOperation(operation); |
332 } | 332 } |
333 | 333 |
334 void InFlightBackendIO::DoomEntriesSince(const base::Time initial_time, | 334 void InFlightBackendIO::DoomEntriesSince(const base::Time initial_time, |
335 CompletionCallback* callback) { | 335 CompletionCallback* callback) { |
336 scoped_refptr<BackendIO> operation = new BackendIO(this, backend_, callback); | 336 scoped_refptr<BackendIO> operation(new BackendIO(this, backend_, callback)); |
337 operation->DoomEntriesSince(initial_time); | 337 operation->DoomEntriesSince(initial_time); |
338 QueueOperation(operation); | 338 QueueOperation(operation); |
339 } | 339 } |
340 | 340 |
341 void InFlightBackendIO::OpenNextEntry(void** iter, Entry** next_entry, | 341 void InFlightBackendIO::OpenNextEntry(void** iter, Entry** next_entry, |
342 CompletionCallback* callback) { | 342 CompletionCallback* callback) { |
343 scoped_refptr<BackendIO> operation = new BackendIO(this, backend_, callback); | 343 scoped_refptr<BackendIO> operation(new BackendIO(this, backend_, callback)); |
344 operation->OpenNextEntry(iter, next_entry); | 344 operation->OpenNextEntry(iter, next_entry); |
345 QueueOperation(operation); | 345 QueueOperation(operation); |
346 } | 346 } |
347 | 347 |
348 void InFlightBackendIO::OpenPrevEntry(void** iter, Entry** prev_entry, | 348 void InFlightBackendIO::OpenPrevEntry(void** iter, Entry** prev_entry, |
349 CompletionCallback* callback) { | 349 CompletionCallback* callback) { |
350 scoped_refptr<BackendIO> operation = new BackendIO(this, backend_, callback); | 350 scoped_refptr<BackendIO> operation(new BackendIO(this, backend_, callback)); |
351 operation->OpenPrevEntry(iter, prev_entry); | 351 operation->OpenPrevEntry(iter, prev_entry); |
352 QueueOperation(operation); | 352 QueueOperation(operation); |
353 } | 353 } |
354 | 354 |
355 void InFlightBackendIO::EndEnumeration(void* iterator) { | 355 void InFlightBackendIO::EndEnumeration(void* iterator) { |
356 scoped_refptr<BackendIO> operation = new BackendIO(this, backend_, NULL); | 356 scoped_refptr<BackendIO> operation(new BackendIO(this, backend_, NULL)); |
357 operation->EndEnumeration(iterator); | 357 operation->EndEnumeration(iterator); |
358 QueueOperation(operation); | 358 QueueOperation(operation); |
359 } | 359 } |
360 | 360 |
361 void InFlightBackendIO::CloseEntryImpl(EntryImpl* entry) { | 361 void InFlightBackendIO::CloseEntryImpl(EntryImpl* entry) { |
362 scoped_refptr<BackendIO> operation = new BackendIO(this, backend_, NULL); | 362 scoped_refptr<BackendIO> operation(new BackendIO(this, backend_, NULL)); |
363 operation->CloseEntryImpl(entry); | 363 operation->CloseEntryImpl(entry); |
364 QueueOperation(operation); | 364 QueueOperation(operation); |
365 } | 365 } |
366 | 366 |
367 void InFlightBackendIO::DoomEntryImpl(EntryImpl* entry) { | 367 void InFlightBackendIO::DoomEntryImpl(EntryImpl* entry) { |
368 scoped_refptr<BackendIO> operation = new BackendIO(this, backend_, NULL); | 368 scoped_refptr<BackendIO> operation(new BackendIO(this, backend_, NULL)); |
369 operation->DoomEntryImpl(entry); | 369 operation->DoomEntryImpl(entry); |
370 QueueOperation(operation); | 370 QueueOperation(operation); |
371 } | 371 } |
372 | 372 |
373 void InFlightBackendIO::FlushQueue(net::CompletionCallback* callback) { | 373 void InFlightBackendIO::FlushQueue(net::CompletionCallback* callback) { |
374 scoped_refptr<BackendIO> operation = new BackendIO(this, backend_, callback); | 374 scoped_refptr<BackendIO> operation(new BackendIO(this, backend_, callback)); |
375 operation->FlushQueue(); | 375 operation->FlushQueue(); |
376 QueueOperation(operation); | 376 QueueOperation(operation); |
377 } | 377 } |
378 | 378 |
379 void InFlightBackendIO::RunTask(Task* task, net::CompletionCallback* callback) { | 379 void InFlightBackendIO::RunTask(Task* task, 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->RunTask(task); | 381 operation->RunTask(task); |
382 QueueOperation(operation); | 382 QueueOperation(operation); |
383 } | 383 } |
384 | 384 |
385 void InFlightBackendIO::ReadData(EntryImpl* entry, int index, int offset, | 385 void InFlightBackendIO::ReadData(EntryImpl* entry, int index, int offset, |
386 net::IOBuffer* buf, int buf_len, | 386 net::IOBuffer* buf, int buf_len, |
387 CompletionCallback* callback) { | 387 CompletionCallback* callback) { |
388 scoped_refptr<BackendIO> operation = new BackendIO(this, backend_, callback); | 388 scoped_refptr<BackendIO> operation(new BackendIO(this, backend_, callback)); |
389 operation->ReadData(entry, index, offset, buf, buf_len); | 389 operation->ReadData(entry, index, offset, buf, buf_len); |
390 QueueOperation(operation); | 390 QueueOperation(operation); |
391 } | 391 } |
392 | 392 |
393 void InFlightBackendIO::WriteData(EntryImpl* entry, int index, int offset, | 393 void InFlightBackendIO::WriteData(EntryImpl* entry, int index, int offset, |
394 net::IOBuffer* buf, int buf_len, | 394 net::IOBuffer* buf, int buf_len, |
395 bool truncate, | 395 bool truncate, |
396 CompletionCallback* callback) { | 396 CompletionCallback* callback) { |
397 scoped_refptr<BackendIO> operation = new BackendIO(this, backend_, callback); | 397 scoped_refptr<BackendIO> operation(new BackendIO(this, backend_, callback)); |
398 operation->WriteData(entry, index, offset, buf, buf_len, truncate); | 398 operation->WriteData(entry, index, offset, buf, buf_len, truncate); |
399 QueueOperation(operation); | 399 QueueOperation(operation); |
400 } | 400 } |
401 | 401 |
402 void InFlightBackendIO::ReadSparseData(EntryImpl* entry, int64 offset, | 402 void InFlightBackendIO::ReadSparseData(EntryImpl* entry, int64 offset, |
403 net::IOBuffer* buf, int buf_len, | 403 net::IOBuffer* buf, int buf_len, |
404 CompletionCallback* callback) { | 404 CompletionCallback* callback) { |
405 scoped_refptr<BackendIO> operation = new BackendIO(this, backend_, callback); | 405 scoped_refptr<BackendIO> operation(new BackendIO(this, backend_, callback)); |
406 operation->ReadSparseData(entry, offset, buf, buf_len); | 406 operation->ReadSparseData(entry, offset, buf, buf_len); |
407 QueueOperation(operation); | 407 QueueOperation(operation); |
408 } | 408 } |
409 | 409 |
410 void InFlightBackendIO::WriteSparseData(EntryImpl* entry, int64 offset, | 410 void InFlightBackendIO::WriteSparseData(EntryImpl* entry, int64 offset, |
411 net::IOBuffer* buf, int buf_len, | 411 net::IOBuffer* buf, int buf_len, |
412 CompletionCallback* callback) { | 412 CompletionCallback* callback) { |
413 scoped_refptr<BackendIO> operation = new BackendIO(this, backend_, callback); | 413 scoped_refptr<BackendIO> operation(new BackendIO(this, backend_, callback)); |
414 operation->WriteSparseData(entry, offset, buf, buf_len); | 414 operation->WriteSparseData(entry, offset, buf, buf_len); |
415 QueueOperation(operation); | 415 QueueOperation(operation); |
416 } | 416 } |
417 | 417 |
418 void InFlightBackendIO::GetAvailableRange(EntryImpl* entry, int64 offset, | 418 void InFlightBackendIO::GetAvailableRange(EntryImpl* entry, int64 offset, |
419 int len, int64* start, | 419 int len, int64* start, |
420 CompletionCallback* callback) { | 420 CompletionCallback* callback) { |
421 scoped_refptr<BackendIO> operation = new BackendIO(this, backend_, callback); | 421 scoped_refptr<BackendIO> operation(new BackendIO(this, backend_, callback)); |
422 operation->GetAvailableRange(entry, offset, len, start); | 422 operation->GetAvailableRange(entry, offset, len, start); |
423 QueueOperation(operation); | 423 QueueOperation(operation); |
424 } | 424 } |
425 | 425 |
426 void InFlightBackendIO::CancelSparseIO(EntryImpl* entry) { | 426 void InFlightBackendIO::CancelSparseIO(EntryImpl* entry) { |
427 scoped_refptr<BackendIO> operation = new BackendIO(this, backend_, NULL); | 427 scoped_refptr<BackendIO> operation(new BackendIO(this, backend_, NULL)); |
428 operation->CancelSparseIO(entry); | 428 operation->CancelSparseIO(entry); |
429 QueueOperation(operation); | 429 QueueOperation(operation); |
430 } | 430 } |
431 | 431 |
432 void InFlightBackendIO::ReadyForSparseIO(EntryImpl* entry, | 432 void InFlightBackendIO::ReadyForSparseIO(EntryImpl* entry, |
433 CompletionCallback* callback) { | 433 CompletionCallback* callback) { |
434 scoped_refptr<BackendIO> operation = new BackendIO(this, backend_, callback); | 434 scoped_refptr<BackendIO> operation(new BackendIO(this, backend_, callback)); |
435 operation->ReadyForSparseIO(entry); | 435 operation->ReadyForSparseIO(entry); |
436 QueueOperation(operation); | 436 QueueOperation(operation); |
437 } | 437 } |
438 | 438 |
439 void InFlightBackendIO::WaitForPendingIO() { | 439 void InFlightBackendIO::WaitForPendingIO() { |
440 // We clear the list first so that we don't post more operations after this | 440 // We clear the list first so that we don't post more operations after this |
441 // point. | 441 // point. |
442 pending_ops_.clear(); | 442 pending_ops_.clear(); |
443 InFlightIO::WaitForPendingIO(); | 443 InFlightIO::WaitForPendingIO(); |
444 } | 444 } |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
510 | 510 |
511 void InFlightBackendIO::QueueOperationToList(BackendIO* operation, | 511 void InFlightBackendIO::QueueOperationToList(BackendIO* operation, |
512 OperationList* list) { | 512 OperationList* list) { |
513 if (list->empty()) | 513 if (list->empty()) |
514 return PostOperation(operation); | 514 return PostOperation(operation); |
515 | 515 |
516 list->push_back(operation); | 516 list->push_back(operation); |
517 } | 517 } |
518 | 518 |
519 } // namespace | 519 } // namespace |
OLD | NEW |