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

Side by Side Diff: net/test/spawned_test_server/spawner_communicator.cc

Issue 2313013002: Revert of Adjust callers and networking delegates in net/ to modified APIs (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@URLRequestRead
Patch Set: Created 4 years, 3 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 | « net/test/spawned_test_server/spawner_communicator.h ('k') | net/url_request/report_sender.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 (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/test/spawned_test_server/spawner_communicator.h" 5 #include "net/test/spawned_test_server/spawner_communicator.h"
6 6
7 #include <limits> 7 #include <limits>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/json/json_reader.h" 10 #include "base/json/json_reader.h"
(...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after
221 // is still applicable. 221 // is still applicable.
222 if (!cur_request_.get()) 222 if (!cur_request_.get())
223 return; 223 return;
224 SpawnerRequestData* data = 224 SpawnerRequestData* data =
225 static_cast<SpawnerRequestData*>(cur_request_->GetUserData(this)); 225 static_cast<SpawnerRequestData*>(cur_request_->GetUserData(this));
226 DCHECK(data); 226 DCHECK(data);
227 227
228 if (!data->DoesRequestIdMatch(id)) 228 if (!data->DoesRequestIdMatch(id))
229 return; 229 return;
230 // Set the result code and cancel the timed-out task. 230 // Set the result code and cancel the timed-out task.
231 int result = cur_request_->CancelWithError(ERR_TIMED_OUT); 231 data->SetResultCode(ERR_TIMED_OUT);
232 OnSpawnerCommandCompleted(cur_request_.get(), result); 232 cur_request_->Cancel();
233 OnSpawnerCommandCompleted(cur_request_.get());
233 } 234 }
234 235
235 void SpawnerCommunicator::OnSpawnerCommandCompleted(URLRequest* request, 236 void SpawnerCommunicator::OnSpawnerCommandCompleted(URLRequest* request) {
236 int net_error) {
237 DCHECK_NE(ERR_IO_PENDING, net_error);
238
239 if (!cur_request_.get()) 237 if (!cur_request_.get())
240 return; 238 return;
241 DCHECK_EQ(request, cur_request_.get()); 239 DCHECK_EQ(request, cur_request_.get());
242 SpawnerRequestData* data = 240 SpawnerRequestData* data =
243 static_cast<SpawnerRequestData*>(cur_request_->GetUserData(this)); 241 static_cast<SpawnerRequestData*>(cur_request_->GetUserData(this));
244 DCHECK(data); 242 DCHECK(data);
245 243
246 // If request is faild,return the error code. 244 // If request is faild,return the error code.
247 if (net_error != OK) 245 if (!cur_request_->status().is_success())
248 data->SetResultCode(net_error); 246 data->SetResultCode(cur_request_->status().error());
249 247
250 if (!data->IsResultOK()) { 248 if (!data->IsResultOK()) {
251 LOG(ERROR) << "request failed, error: " << net_error; 249 LOG(ERROR) << "request failed, status: "
250 << static_cast<int>(request->status().status())
251 << ", error: " << request->status().error();
252 // Clear the buffer of received data if any net error happened. 252 // Clear the buffer of received data if any net error happened.
253 data->ClearReceivedData(); 253 data->ClearReceivedData();
254 } else { 254 } else {
255 DCHECK_EQ(1, data->response_started_count()); 255 DCHECK_EQ(1, data->response_started_count());
256 } 256 }
257 257
258 // Clear current request to indicate the completion of sending a command 258 // Clear current request to indicate the completion of sending a command
259 // to spawner server and getting the result. 259 // to spawner server and getting the result.
260 cur_request_.reset(); 260 cur_request_.reset();
261 context_.reset(); 261 context_.reset();
262 // Invalidate the weak pointers on the IO thread. 262 // Invalidate the weak pointers on the IO thread.
263 weak_factory_.InvalidateWeakPtrs(); 263 weak_factory_.InvalidateWeakPtrs();
264 264
265 // Wakeup the caller in user thread. 265 // Wakeup the caller in user thread.
266 event_.Signal(); 266 event_.Signal();
267 } 267 }
268 268
269 void SpawnerCommunicator::ReadResult(URLRequest* request) { 269 void SpawnerCommunicator::ReadResult(URLRequest* request) {
270 DCHECK_EQ(request, cur_request_.get()); 270 DCHECK_EQ(request, cur_request_.get());
271 SpawnerRequestData* data = 271 SpawnerRequestData* data =
272 static_cast<SpawnerRequestData*>(cur_request_->GetUserData(this)); 272 static_cast<SpawnerRequestData*>(cur_request_->GetUserData(this));
273 DCHECK(data); 273 DCHECK(data);
274 274
275 IOBuffer* buf = data->buf(); 275 IOBuffer* buf = data->buf();
276 // Read as many bytes as are available synchronously. 276 // Read as many bytes as are available synchronously.
277 while (true) { 277 while (true) {
278 int rv = request->Read(buf, kBufferSize); 278 int num_bytes;
279 if (rv == ERR_IO_PENDING) 279 if (!request->Read(buf, kBufferSize, &num_bytes)) {
280 return; 280 // Check whether the read failed synchronously.
281 281 if (!request->status().is_io_pending())
282 if (rv < 0) { 282 OnSpawnerCommandCompleted(request);
283 OnSpawnerCommandCompleted(request, rv);
284 return; 283 return;
285 } 284 }
286 285 if (!data->ConsumeBytesRead(num_bytes)) {
287 if (!data->ConsumeBytesRead(rv)) { 286 OnSpawnerCommandCompleted(request);
288 OnSpawnerCommandCompleted(request, rv);
289 return; 287 return;
290 } 288 }
291 } 289 }
292 } 290 }
293 291
294 void SpawnerCommunicator::OnResponseStarted(URLRequest* request, 292 void SpawnerCommunicator::OnResponseStarted(URLRequest* request) {
295 int net_error) {
296 DCHECK_EQ(request, cur_request_.get()); 293 DCHECK_EQ(request, cur_request_.get());
297 DCHECK_NE(ERR_IO_PENDING, net_error);
298
299 SpawnerRequestData* data = 294 SpawnerRequestData* data =
300 static_cast<SpawnerRequestData*>(cur_request_->GetUserData(this)); 295 static_cast<SpawnerRequestData*>(cur_request_->GetUserData(this));
301 DCHECK(data); 296 DCHECK(data);
302 297
303 data->IncreaseResponseStartedCount(); 298 data->IncreaseResponseStartedCount();
304 299
305 if (net_error != OK) { 300 if (!request->status().is_success()) {
306 OnSpawnerCommandCompleted(request, net_error); 301 OnSpawnerCommandCompleted(request);
307 return; 302 return;
308 } 303 }
309 304
310 // Require HTTP responses to have a success status code. 305 // Require HTTP responses to have a success status code.
311 if (request->GetResponseCode() != 200) { 306 if (request->GetResponseCode() != 200) {
312 LOG(ERROR) << "Spawner server returned bad status: " 307 LOG(ERROR) << "Spawner server returned bad status: "
313 << request->response_headers()->GetStatusLine(); 308 << request->response_headers()->GetStatusLine();
314 data->SetResultCode(ERR_FAILED); 309 data->SetResultCode(ERR_FAILED);
315 request->Cancel(); 310 request->Cancel();
316 OnSpawnerCommandCompleted(request, ERR_ABORTED); 311 OnSpawnerCommandCompleted(request);
317 return; 312 return;
318 } 313 }
319 314
320 ReadResult(request); 315 ReadResult(request);
321 } 316 }
322 317
323 void SpawnerCommunicator::OnReadCompleted(URLRequest* request, int num_bytes) { 318 void SpawnerCommunicator::OnReadCompleted(URLRequest* request, int num_bytes) {
324 DCHECK_NE(ERR_IO_PENDING, num_bytes);
325
326 if (!cur_request_.get()) 319 if (!cur_request_.get())
327 return; 320 return;
328 DCHECK_EQ(request, cur_request_.get()); 321 DCHECK_EQ(request, cur_request_.get());
329 SpawnerRequestData* data = 322 SpawnerRequestData* data =
330 static_cast<SpawnerRequestData*>(cur_request_->GetUserData(this)); 323 static_cast<SpawnerRequestData*>(cur_request_->GetUserData(this));
331 DCHECK(data); 324 DCHECK(data);
332 325
333 if (data->ConsumeBytesRead(num_bytes)) { 326 if (data->ConsumeBytesRead(num_bytes)) {
334 // Keep reading. 327 // Keep reading.
335 ReadResult(request); 328 ReadResult(request);
336 } else { 329 } else {
337 // |bytes_read| < 0 330 OnSpawnerCommandCompleted(request);
338 int net_error = num_bytes;
339 OnSpawnerCommandCompleted(request, net_error);
340 } 331 }
341 } 332 }
342 333
343 bool SpawnerCommunicator::StartServer(const std::string& arguments, 334 bool SpawnerCommunicator::StartServer(const std::string& arguments,
344 uint16_t* port) { 335 uint16_t* port) {
345 *port = 0; 336 *port = 0;
346 // Send the start command to spawner server to start the Python test server 337 // Send the start command to spawner server to start the Python test server
347 // on remote machine. 338 // on remote machine.
348 std::string server_return_data; 339 std::string server_return_data;
349 int result_code; 340 int result_code;
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
389 std::string server_return_data; 380 std::string server_return_data;
390 int result_code; 381 int result_code;
391 SendCommandAndWaitForResult("kill", "", &result_code, &server_return_data); 382 SendCommandAndWaitForResult("kill", "", &result_code, &server_return_data);
392 Shutdown(); 383 Shutdown();
393 if (OK != result_code || server_return_data != "killed") 384 if (OK != result_code || server_return_data != "killed")
394 return false; 385 return false;
395 return true; 386 return true;
396 } 387 }
397 388
398 } // namespace net 389 } // namespace net
OLDNEW
« no previous file with comments | « net/test/spawned_test_server/spawner_communicator.h ('k') | net/url_request/report_sender.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698