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

Side by Side Diff: net/base/upload_file_element_reader.cc

Issue 15829004: Update net/ to use scoped_refptr<T>::get() rather than implicit "operator T*" (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: license twerk Created 7 years, 6 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/base/upload_file_element_reader.h" 5 #include "net/base/upload_file_element_reader.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/file_util.h" 8 #include "base/file_util.h"
9 #include "base/location.h" 9 #include "base/location.h"
10 #include "base/task_runner_util.h" 10 #include "base/task_runner_util.h"
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
87 if (result == 0) // Reached end-of-file earlier than expected. 87 if (result == 0) // Reached end-of-file earlier than expected.
88 result = ERR_UPLOAD_FILE_CHANGED; 88 result = ERR_UPLOAD_FILE_CHANGED;
89 } 89 }
90 return result; 90 return result;
91 } 91 }
92 92
93 } // namespace 93 } // namespace
94 94
95 UploadFileElementReader::FileStreamDeleter::FileStreamDeleter( 95 UploadFileElementReader::FileStreamDeleter::FileStreamDeleter(
96 base::TaskRunner* task_runner) : task_runner_(task_runner) { 96 base::TaskRunner* task_runner) : task_runner_(task_runner) {
97 DCHECK(task_runner_); 97 DCHECK(task_runner_.get());
98 } 98 }
99 99
100 UploadFileElementReader::FileStreamDeleter::~FileStreamDeleter() {} 100 UploadFileElementReader::FileStreamDeleter::~FileStreamDeleter() {}
101 101
102 void UploadFileElementReader::FileStreamDeleter::operator() ( 102 void UploadFileElementReader::FileStreamDeleter::operator() (
103 FileStream* file_stream) const { 103 FileStream* file_stream) const {
104 if (file_stream) { 104 if (file_stream) {
105 task_runner_->PostTask(FROM_HERE, 105 task_runner_->PostTask(FROM_HERE,
106 base::Bind(&base::DeletePointer<FileStream>, 106 base::Bind(&base::DeletePointer<FileStream>,
107 file_stream)); 107 file_stream));
108 } 108 }
109 } 109 }
110 110
111 UploadFileElementReader::UploadFileElementReader( 111 UploadFileElementReader::UploadFileElementReader(
112 base::TaskRunner* task_runner, 112 base::TaskRunner* task_runner,
113 const base::FilePath& path, 113 const base::FilePath& path,
114 uint64 range_offset, 114 uint64 range_offset,
115 uint64 range_length, 115 uint64 range_length,
116 const base::Time& expected_modification_time) 116 const base::Time& expected_modification_time)
117 : task_runner_(task_runner), 117 : task_runner_(task_runner),
118 path_(path), 118 path_(path),
119 range_offset_(range_offset), 119 range_offset_(range_offset),
120 range_length_(range_length), 120 range_length_(range_length),
121 expected_modification_time_(expected_modification_time), 121 expected_modification_time_(expected_modification_time),
122 file_stream_(NULL, FileStreamDeleter(task_runner_)), 122 file_stream_(NULL, FileStreamDeleter(task_runner_.get())),
123 content_length_(0), 123 content_length_(0),
124 bytes_remaining_(0), 124 bytes_remaining_(0),
125 weak_ptr_factory_(this) { 125 weak_ptr_factory_(this) {
126 DCHECK(task_runner_); 126 DCHECK(task_runner_.get());
127 } 127 }
128 128
129 UploadFileElementReader::~UploadFileElementReader() { 129 UploadFileElementReader::~UploadFileElementReader() {
130 } 130 }
131 131
132 const UploadFileElementReader* UploadFileElementReader::AsFileReader() const { 132 const UploadFileElementReader* UploadFileElementReader::AsFileReader() const {
133 return this; 133 return this;
134 } 134 }
135 135
136 int UploadFileElementReader::Init(const CompletionCallback& callback) { 136 int UploadFileElementReader::Init(const CompletionCallback& callback) {
137 DCHECK(!callback.is_null()); 137 DCHECK(!callback.is_null());
138 Reset(); 138 Reset();
139 139
140 ScopedFileStreamPtr* file_stream = 140 ScopedFileStreamPtr* file_stream =
141 new ScopedFileStreamPtr(NULL, FileStreamDeleter(task_runner_)); 141 new ScopedFileStreamPtr(NULL, FileStreamDeleter(task_runner_.get()));
142 uint64* content_length = new uint64; 142 uint64* content_length = new uint64;
143 const bool posted = base::PostTaskAndReplyWithResult( 143 const bool posted = base::PostTaskAndReplyWithResult(
144 task_runner_, 144 task_runner_.get(),
145 FROM_HERE, 145 FROM_HERE,
146 base::Bind(&InitInternal<FileStreamDeleter>, 146 base::Bind(&InitInternal<FileStreamDeleter>,
147 path_, 147 path_,
148 range_offset_, 148 range_offset_,
149 range_length_, 149 range_length_,
150 expected_modification_time_, 150 expected_modification_time_,
151 file_stream, 151 file_stream,
152 content_length), 152 content_length),
153 base::Bind(&UploadFileElementReader::OnInitCompleted, 153 base::Bind(&UploadFileElementReader::OnInitCompleted,
154 weak_ptr_factory_.GetWeakPtr(), 154 weak_ptr_factory_.GetWeakPtr(),
(...skipping 20 matching lines...) Expand all
175 DCHECK(!callback.is_null()); 175 DCHECK(!callback.is_null());
176 176
177 if (BytesRemaining() == 0) 177 if (BytesRemaining() == 0)
178 return 0; 178 return 0;
179 179
180 // Save the value of file_stream_.get() before base::Passed() invalidates it. 180 // Save the value of file_stream_.get() before base::Passed() invalidates it.
181 FileStream* file_stream_ptr = file_stream_.get(); 181 FileStream* file_stream_ptr = file_stream_.get();
182 // Pass the ownership of file_stream_ to the worker pool to safely perform 182 // Pass the ownership of file_stream_ to the worker pool to safely perform
183 // operation even when |this| is destructed before the read completes. 183 // operation even when |this| is destructed before the read completes.
184 const bool posted = base::PostTaskAndReplyWithResult( 184 const bool posted = base::PostTaskAndReplyWithResult(
185 task_runner_, 185 task_runner_.get(),
186 FROM_HERE, 186 FROM_HERE,
187 base::Bind(&ReadInternal, 187 base::Bind(&ReadInternal,
188 scoped_refptr<IOBuffer>(buf), 188 scoped_refptr<IOBuffer>(buf),
189 buf_length, 189 buf_length,
190 BytesRemaining(), 190 BytesRemaining(),
191 file_stream_ptr), 191 file_stream_ptr),
192 base::Bind(&UploadFileElementReader::OnReadCompleted, 192 base::Bind(&UploadFileElementReader::OnReadCompleted,
193 weak_ptr_factory_.GetWeakPtr(), 193 weak_ptr_factory_.GetWeakPtr(),
194 base::Passed(&file_stream_), 194 base::Passed(&file_stream_),
195 callback)); 195 callback));
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
281 const int result = ReadInternal(buf, buf_length, BytesRemaining(), 281 const int result = ReadInternal(buf, buf_length, BytesRemaining(),
282 file_stream_.get()); 282 file_stream_.get());
283 if (result > 0) { 283 if (result > 0) {
284 DCHECK_GE(bytes_remaining_, static_cast<uint64>(result)); 284 DCHECK_GE(bytes_remaining_, static_cast<uint64>(result));
285 bytes_remaining_ -= result; 285 bytes_remaining_ -= result;
286 } 286 }
287 return result; 287 return result;
288 } 288 }
289 289
290 } // namespace net 290 } // namespace net
OLDNEW
« no previous file with comments | « net/base/upload_data_stream_unittest.cc ('k') | net/base/upload_file_element_reader_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698