| OLD | NEW |
| 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 "base/files/file_proxy.h" | 5 #include "base/files/file_proxy.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/bind_helpers.h" | 10 #include "base/bind_helpers.h" |
| (...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 185 error_ = (bytes_read_ < 0) ? File::FILE_ERROR_FAILED : File::FILE_OK; | 185 error_ = (bytes_read_ < 0) ? File::FILE_ERROR_FAILED : File::FILE_OK; |
| 186 } | 186 } |
| 187 | 187 |
| 188 void Reply(const FileProxy::ReadCallback& callback) { | 188 void Reply(const FileProxy::ReadCallback& callback) { |
| 189 PassFile(); | 189 PassFile(); |
| 190 DCHECK(!callback.is_null()); | 190 DCHECK(!callback.is_null()); |
| 191 callback.Run(error_, buffer_.get(), bytes_read_); | 191 callback.Run(error_, buffer_.get(), bytes_read_); |
| 192 } | 192 } |
| 193 | 193 |
| 194 private: | 194 private: |
| 195 scoped_ptr<char[]> buffer_; | 195 std::unique_ptr<char[]> buffer_; |
| 196 int bytes_to_read_; | 196 int bytes_to_read_; |
| 197 int bytes_read_; | 197 int bytes_read_; |
| 198 DISALLOW_COPY_AND_ASSIGN(ReadHelper); | 198 DISALLOW_COPY_AND_ASSIGN(ReadHelper); |
| 199 }; | 199 }; |
| 200 | 200 |
| 201 class WriteHelper : public FileHelper { | 201 class WriteHelper : public FileHelper { |
| 202 public: | 202 public: |
| 203 WriteHelper(FileProxy* proxy, | 203 WriteHelper(FileProxy* proxy, |
| 204 File file, | 204 File file, |
| 205 const char* buffer, int bytes_to_write) | 205 const char* buffer, int bytes_to_write) |
| 206 : FileHelper(proxy, std::move(file)), | 206 : FileHelper(proxy, std::move(file)), |
| 207 buffer_(new char[bytes_to_write]), | 207 buffer_(new char[bytes_to_write]), |
| 208 bytes_to_write_(bytes_to_write), | 208 bytes_to_write_(bytes_to_write), |
| 209 bytes_written_(0) { | 209 bytes_written_(0) { |
| 210 memcpy(buffer_.get(), buffer, bytes_to_write); | 210 memcpy(buffer_.get(), buffer, bytes_to_write); |
| 211 } | 211 } |
| 212 | 212 |
| 213 void RunWork(int64_t offset) { | 213 void RunWork(int64_t offset) { |
| 214 bytes_written_ = file_.Write(offset, buffer_.get(), bytes_to_write_); | 214 bytes_written_ = file_.Write(offset, buffer_.get(), bytes_to_write_); |
| 215 error_ = (bytes_written_ < 0) ? File::FILE_ERROR_FAILED : File::FILE_OK; | 215 error_ = (bytes_written_ < 0) ? File::FILE_ERROR_FAILED : File::FILE_OK; |
| 216 } | 216 } |
| 217 | 217 |
| 218 void Reply(const FileProxy::WriteCallback& callback) { | 218 void Reply(const FileProxy::WriteCallback& callback) { |
| 219 PassFile(); | 219 PassFile(); |
| 220 if (!callback.is_null()) | 220 if (!callback.is_null()) |
| 221 callback.Run(error_, bytes_written_); | 221 callback.Run(error_, bytes_written_); |
| 222 } | 222 } |
| 223 | 223 |
| 224 private: | 224 private: |
| 225 scoped_ptr<char[]> buffer_; | 225 std::unique_ptr<char[]> buffer_; |
| 226 int bytes_to_write_; | 226 int bytes_to_write_; |
| 227 int bytes_written_; | 227 int bytes_written_; |
| 228 DISALLOW_COPY_AND_ASSIGN(WriteHelper); | 228 DISALLOW_COPY_AND_ASSIGN(WriteHelper); |
| 229 }; | 229 }; |
| 230 | 230 |
| 231 } // namespace | 231 } // namespace |
| 232 | 232 |
| 233 FileProxy::FileProxy(TaskRunner* task_runner) : task_runner_(task_runner) { | 233 FileProxy::FileProxy(TaskRunner* task_runner) : task_runner_(task_runner) { |
| 234 } | 234 } |
| 235 | 235 |
| (...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 350 bool FileProxy::Flush(const StatusCallback& callback) { | 350 bool FileProxy::Flush(const StatusCallback& callback) { |
| 351 DCHECK(file_.IsValid()); | 351 DCHECK(file_.IsValid()); |
| 352 GenericFileHelper* helper = new GenericFileHelper(this, std::move(file_)); | 352 GenericFileHelper* helper = new GenericFileHelper(this, std::move(file_)); |
| 353 return task_runner_->PostTaskAndReply( | 353 return task_runner_->PostTaskAndReply( |
| 354 FROM_HERE, | 354 FROM_HERE, |
| 355 Bind(&GenericFileHelper::Flush, Unretained(helper)), | 355 Bind(&GenericFileHelper::Flush, Unretained(helper)), |
| 356 Bind(&GenericFileHelper::Reply, Owned(helper), callback)); | 356 Bind(&GenericFileHelper::Reply, Owned(helper), callback)); |
| 357 } | 357 } |
| 358 | 358 |
| 359 } // namespace base | 359 } // namespace base |
| OLD | NEW |