diff options
author | rvargas@google.com <rvargas@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-07-01 01:12:00 +0000 |
---|---|---|
committer | rvargas@google.com <rvargas@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-07-01 01:12:00 +0000 |
commit | 05bebf1bc8d96ca3262cd3015af5c8178d3e7f84 (patch) | |
tree | 147efbc0cd0087e277aed96ed01ba6b85a254faf /net/disk_cache/in_flight_io.cc | |
parent | 6ebf2fc952b8170971e37971e9d1362c64424e89 (diff) | |
download | chromium_src-05bebf1bc8d96ca3262cd3015af5c8178d3e7f84.zip chromium_src-05bebf1bc8d96ca3262cd3015af5c8178d3e7f84.tar.gz chromium_src-05bebf1bc8d96ca3262cd3015af5c8178d3e7f84.tar.bz2 |
Revert 51312 - Disk cache: Switch the disk cache to use the cache_thread.
(tsan errors on the unit tests)
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/2829008
TBR=nsylvain@chromium.org
Review URL: http://codereview.chromium.org/2819032
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@51325 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 | 64 |
1 files changed, 0 insertions, 64 deletions
diff --git a/net/disk_cache/in_flight_io.cc b/net/disk_cache/in_flight_io.cc deleted file mode 100644 index 09179ab..0000000 --- a/net/disk_cache/in_flight_io.cc +++ /dev/null @@ -1,64 +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 IO 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) { - callback_thread_->PostTask(FROM_HERE, - NewRunnableMethod(operation, - &BackgroundIO::OnIOSignalled)); - operation->io_completed()->Signal(); -} - -// Runs on the IO 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 IO thread. -void InFlightIO::OnOperationPosted(BackgroundIO* operation) { - io_list_.insert(operation); -} - -} // namespace disk_cache |