diff options
author | rvargas@google.com <rvargas@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-07-02 01:07:35 +0000 |
---|---|---|
committer | rvargas@google.com <rvargas@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-07-02 01:07:35 +0000 |
commit | 19695a2dc9e77d00bf7205225467ebf8ffb16da4 (patch) | |
tree | b9274b10cbf335f8c7f30dad86cbda4ad607ac98 /net/disk_cache/in_flight_io.cc | |
parent | d217dacf73359389da9bf64bc64742e525338aac (diff) | |
download | chromium_src-19695a2dc9e77d00bf7205225467ebf8ffb16da4.zip chromium_src-19695a2dc9e77d00bf7205225467ebf8ffb16da4.tar.gz chromium_src-19695a2dc9e77d00bf7205225467ebf8ffb16da4.tar.bz2 |
Revert 51456 - Disk cache: Switch the disk cache to use the cache_thread.
Add an InFlightBackendIO class that handles posting of
cacheoperations back and forth between the IO thread and
the cachethread.
BUG=26730
TEST=unit tests
Review URL: http://codereview.chromium.org/2841034
TBR=rvargas@google.com
Review URL: http://codereview.chromium.org/2881010
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@51469 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/disk_cache/in_flight_io.cc')
-rw-r--r-- | net/disk_cache/in_flight_io.cc | 73 |
1 files changed, 0 insertions, 73 deletions
diff --git a/net/disk_cache/in_flight_io.cc b/net/disk_cache/in_flight_io.cc deleted file mode 100644 index 24b0e9c..0000000 --- a/net/disk_cache/in_flight_io.cc +++ /dev/null @@ -1,73 +0,0 @@ -// Copyright (c) 2006-2010 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "net/disk_cache/in_flight_io.h" - -#include "base/logging.h" - -namespace disk_cache { - -// Runs on the primary thread. -void BackgroundIO::OnIOSignalled() { - if (controller_) - controller_->InvokeCallback(this, false); -} - -void BackgroundIO::Cancel() { - DCHECK(controller_); - controller_ = NULL; -} - -// Runs on the background thread. -void BackgroundIO::NotifyController() { - controller_->OnIOComplete(this); -} - -// --------------------------------------------------------------------------- - -void InFlightIO::WaitForPendingIO() { - while (!io_list_.empty()) { - // Block the current thread until all pending IO completes. - IOList::iterator it = io_list_.begin(); - InvokeCallback(*it, true); - } -} - -// Runs on a background thread. -void InFlightIO::OnIOComplete(BackgroundIO* operation) { -#ifndef NDEBUG - if (callback_thread_ == MessageLoop::current()) { - DCHECK(single_thread_ || !running_); - single_thread_ = true; - } - running_ = true; -#endif - - callback_thread_->PostTask(FROM_HERE, - NewRunnableMethod(operation, - &BackgroundIO::OnIOSignalled)); - operation->io_completed()->Signal(); -} - -// Runs on the primary thread. -void InFlightIO::InvokeCallback(BackgroundIO* operation, bool cancel_task) { - operation->io_completed()->Wait(); - - if (cancel_task) - operation->Cancel(); - - // Make sure that we remove the operation from the list before invoking the - // callback (so that a subsequent cancel does not invoke the callback again). - DCHECK(io_list_.find(operation) != io_list_.end()); - io_list_.erase(operation); - OnOperationComplete(operation, cancel_task); -} - -// Runs on the primary thread. -void InFlightIO::OnOperationPosted(BackgroundIO* operation) { - DCHECK(callback_thread_ == MessageLoop::current()); - io_list_.insert(operation); -} - -} // namespace disk_cache |