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 "extensions/browser/api/cast_channel/cast_transport.h" | 5 #include "extensions/browser/api/cast_channel/cast_transport.h" |
6 | 6 |
| 7 #include <stddef.h> |
| 8 #include <stdint.h> |
| 9 |
7 #include <string> | 10 #include <string> |
8 #include <utility> | 11 #include <utility> |
9 | 12 |
10 #include "base/bind.h" | 13 #include "base/bind.h" |
11 #include "base/format_macros.h" | 14 #include "base/format_macros.h" |
12 #include "base/message_loop/message_loop.h" | 15 #include "base/message_loop/message_loop.h" |
13 #include "base/numerics/safe_conversions.h" | 16 #include "base/numerics/safe_conversions.h" |
14 #include "base/strings/stringprintf.h" | 17 #include "base/strings/stringprintf.h" |
15 #include "extensions/browser/api/cast_channel/cast_framer.h" | 18 #include "extensions/browser/api/cast_channel/cast_framer.h" |
16 #include "extensions/browser/api/cast_channel/cast_message_util.h" | 19 #include "extensions/browser/api/cast_channel/cast_message_util.h" |
(...skipping 385 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
402 int CastTransportImpl::DoRead() { | 405 int CastTransportImpl::DoRead() { |
403 VLOG_WITH_CONNECTION(2) << "DoRead"; | 406 VLOG_WITH_CONNECTION(2) << "DoRead"; |
404 SetReadState(READ_STATE_READ_COMPLETE); | 407 SetReadState(READ_STATE_READ_COMPLETE); |
405 | 408 |
406 // Determine how many bytes need to be read. | 409 // Determine how many bytes need to be read. |
407 size_t num_bytes_to_read = framer_->BytesRequested(); | 410 size_t num_bytes_to_read = framer_->BytesRequested(); |
408 DCHECK_GT(num_bytes_to_read, 0u); | 411 DCHECK_GT(num_bytes_to_read, 0u); |
409 | 412 |
410 // Read up to num_bytes_to_read into |current_read_buffer_|. | 413 // Read up to num_bytes_to_read into |current_read_buffer_|. |
411 return socket_->Read( | 414 return socket_->Read( |
412 read_buffer_.get(), base::checked_cast<uint32>(num_bytes_to_read), | 415 read_buffer_.get(), base::checked_cast<uint32_t>(num_bytes_to_read), |
413 base::Bind(&CastTransportImpl::OnReadResult, base::Unretained(this))); | 416 base::Bind(&CastTransportImpl::OnReadResult, base::Unretained(this))); |
414 } | 417 } |
415 | 418 |
416 int CastTransportImpl::DoReadComplete(int result) { | 419 int CastTransportImpl::DoReadComplete(int result) { |
417 VLOG_WITH_CONNECTION(2) << "DoReadComplete result = " << result; | 420 VLOG_WITH_CONNECTION(2) << "DoReadComplete result = " << result; |
418 logger_->LogSocketEventWithRv(channel_id_, proto::SOCKET_READ, result); | 421 logger_->LogSocketEventWithRv(channel_id_, proto::SOCKET_READ, result); |
419 if (result <= 0) { | 422 if (result <= 0) { |
420 VLOG_WITH_CONNECTION(1) << "Read error, peer closed the socket."; | 423 VLOG_WITH_CONNECTION(1) << "Read error, peer closed the socket."; |
421 SetErrorState(CHANNEL_ERROR_SOCKET_ERROR); | 424 SetErrorState(CHANNEL_ERROR_SOCKET_ERROR); |
422 SetReadState(READ_STATE_HANDLE_ERROR); | 425 SetReadState(READ_STATE_HANDLE_ERROR); |
423 return result == 0 ? net::ERR_FAILED : result; | 426 return result == 0 ? net::ERR_FAILED : result; |
424 } | 427 } |
425 | 428 |
426 size_t message_size; | 429 size_t message_size; |
427 DCHECK(!current_message_); | 430 DCHECK(!current_message_); |
428 ChannelError framing_error; | 431 ChannelError framing_error; |
429 current_message_ = framer_->Ingest(result, &message_size, &framing_error); | 432 current_message_ = framer_->Ingest(result, &message_size, &framing_error); |
430 if (current_message_.get() && (framing_error == CHANNEL_ERROR_NONE)) { | 433 if (current_message_.get() && (framing_error == CHANNEL_ERROR_NONE)) { |
431 DCHECK_GT(message_size, static_cast<size_t>(0)); | 434 DCHECK_GT(message_size, static_cast<size_t>(0)); |
432 logger_->LogSocketEventForMessage( | 435 logger_->LogSocketEventForMessage( |
433 channel_id_, proto::MESSAGE_READ, current_message_->namespace_(), | 436 channel_id_, proto::MESSAGE_READ, current_message_->namespace_(), |
434 base::StringPrintf("Message size: %u", | 437 base::StringPrintf("Message size: %u", |
435 static_cast<uint32>(message_size))); | 438 static_cast<uint32_t>(message_size))); |
436 SetReadState(READ_STATE_DO_CALLBACK); | 439 SetReadState(READ_STATE_DO_CALLBACK); |
437 } else if (framing_error != CHANNEL_ERROR_NONE) { | 440 } else if (framing_error != CHANNEL_ERROR_NONE) { |
438 DCHECK(!current_message_); | 441 DCHECK(!current_message_); |
439 SetErrorState(CHANNEL_ERROR_INVALID_MESSAGE); | 442 SetErrorState(CHANNEL_ERROR_INVALID_MESSAGE); |
440 SetReadState(READ_STATE_HANDLE_ERROR); | 443 SetReadState(READ_STATE_HANDLE_ERROR); |
441 } else { | 444 } else { |
442 DCHECK(!current_message_); | 445 DCHECK(!current_message_); |
443 SetReadState(READ_STATE_READ); | 446 SetReadState(READ_STATE_READ); |
444 } | 447 } |
445 return net::OK; | 448 return net::OK; |
(...skipping 16 matching lines...) Expand all Loading... |
462 VLOG_WITH_CONNECTION(2) << "DoReadHandleError"; | 465 VLOG_WITH_CONNECTION(2) << "DoReadHandleError"; |
463 DCHECK_NE(CHANNEL_ERROR_NONE, error_state_); | 466 DCHECK_NE(CHANNEL_ERROR_NONE, error_state_); |
464 DCHECK_LE(result, 0); | 467 DCHECK_LE(result, 0); |
465 SetReadState(READ_STATE_ERROR); | 468 SetReadState(READ_STATE_ERROR); |
466 return net::ERR_FAILED; | 469 return net::ERR_FAILED; |
467 } | 470 } |
468 | 471 |
469 } // namespace cast_channel | 472 } // namespace cast_channel |
470 } // namespace api | 473 } // namespace api |
471 } // namespace extensions | 474 } // namespace extensions |
OLD | NEW |