Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(71)

Side by Side Diff: net/disk_cache/blockfile/file_ios.cc

Issue 2608093002: Use TaskScheduler instead of WorkerPool in file_ios.cc. (Closed)
Patch Set: self-review Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | net/disk_cache/disk_cache_test_base.h » ('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/disk_cache/blockfile/file.h" 5 #include "net/disk_cache/blockfile/file.h"
6 6
7 #include <limits.h> 7 #include <limits.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <limits> 10 #include <limits>
11 #include <utility> 11 #include <utility>
12 12
13 #include "base/bind.h" 13 #include "base/bind.h"
14 #include "base/location.h" 14 #include "base/location.h"
15 #include "base/logging.h" 15 #include "base/logging.h"
16 #include "base/macros.h" 16 #include "base/macros.h"
17 #include "base/threading/worker_pool.h" 17 #include "base/task_scheduler/post_task.h"
18 #include "net/base/net_errors.h" 18 #include "net/base/net_errors.h"
19 #include "net/disk_cache/blockfile/in_flight_io.h" 19 #include "net/disk_cache/blockfile/in_flight_io.h"
20 #include "net/disk_cache/disk_cache.h" 20 #include "net/disk_cache/disk_cache.h"
21 21
22 namespace { 22 namespace {
23 23
24 // This class represents a single asynchronous IO operation while it is being 24 // This class represents a single asynchronous IO operation while it is being
25 // bounced between threads. 25 // bounced between threads.
26 class FileBackgroundIO : public disk_cache::BackgroundIO { 26 class FileBackgroundIO : public disk_cache::BackgroundIO {
27 public: 27 public:
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
114 } 114 }
115 115
116 // --------------------------------------------------------------------------- 116 // ---------------------------------------------------------------------------
117 117
118 void FileInFlightIO::PostRead(disk_cache::File *file, void* buf, size_t buf_len, 118 void FileInFlightIO::PostRead(disk_cache::File *file, void* buf, size_t buf_len,
119 size_t offset, disk_cache::FileIOCallback *callback) { 119 size_t offset, disk_cache::FileIOCallback *callback) {
120 scoped_refptr<FileBackgroundIO> operation( 120 scoped_refptr<FileBackgroundIO> operation(
121 new FileBackgroundIO(file, buf, buf_len, offset, callback, this)); 121 new FileBackgroundIO(file, buf, buf_len, offset, callback, this));
122 file->AddRef(); // Balanced on OnOperationComplete() 122 file->AddRef(); // Balanced on OnOperationComplete()
123 123
124 base::WorkerPool::PostTask(FROM_HERE, 124 base::PostTaskWithTraits(
125 base::Bind(&FileBackgroundIO::Read, operation.get()), true); 125 FROM_HERE, base::TaskTraits()
126 .WithShutdownBehavior(
127 base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN)
128 .MayBlock(),
129 base::Bind(&FileBackgroundIO::Read, operation.get()));
126 OnOperationPosted(operation.get()); 130 OnOperationPosted(operation.get());
127 } 131 }
128 132
129 void FileInFlightIO::PostWrite(disk_cache::File* file, const void* buf, 133 void FileInFlightIO::PostWrite(disk_cache::File* file, const void* buf,
130 size_t buf_len, size_t offset, 134 size_t buf_len, size_t offset,
131 disk_cache::FileIOCallback* callback) { 135 disk_cache::FileIOCallback* callback) {
132 scoped_refptr<FileBackgroundIO> operation( 136 scoped_refptr<FileBackgroundIO> operation(
133 new FileBackgroundIO(file, buf, buf_len, offset, callback, this)); 137 new FileBackgroundIO(file, buf, buf_len, offset, callback, this));
134 file->AddRef(); // Balanced on OnOperationComplete() 138 file->AddRef(); // Balanced on OnOperationComplete()
135 139
136 base::WorkerPool::PostTask(FROM_HERE, 140 base::PostTaskWithTraits(
137 base::Bind(&FileBackgroundIO::Write, operation.get()), true); 141 FROM_HERE, base::TaskTraits()
142 .WithShutdownBehavior(
143 base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN)
144 .MayBlock(),
145 base::Bind(&FileBackgroundIO::Write, operation.get()));
138 OnOperationPosted(operation.get()); 146 OnOperationPosted(operation.get());
139 } 147 }
140 148
141 // Runs on the IO thread. 149 // Runs on the IO thread.
142 void FileInFlightIO::OnOperationComplete(disk_cache::BackgroundIO* operation, 150 void FileInFlightIO::OnOperationComplete(disk_cache::BackgroundIO* operation,
143 bool cancel) { 151 bool cancel) {
144 FileBackgroundIO* op = static_cast<FileBackgroundIO*>(operation); 152 FileBackgroundIO* op = static_cast<FileBackgroundIO*>(operation);
145 153
146 disk_cache::FileIOCallback* callback = op->callback(); 154 disk_cache::FileIOCallback* callback = op->callback();
147 int bytes = operation->result(); 155 int bytes = operation->result();
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after
294 return false; 302 return false;
295 303
296 GetFileInFlightIO()->PostWrite(this, buffer, buffer_len, offset, callback); 304 GetFileInFlightIO()->PostWrite(this, buffer, buffer_len, offset, callback);
297 305
298 if (completed) 306 if (completed)
299 *completed = false; 307 *completed = false;
300 return true; 308 return true;
301 } 309 }
302 310
303 } // namespace disk_cache 311 } // namespace disk_cache
OLDNEW
« no previous file with comments | « no previous file | net/disk_cache/disk_cache_test_base.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698