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

Side by Side Diff: components/cast_channel/cast_socket.cc

Issue 2937153002: [cast_channel] Create KeepAliveDelegate in CastSocket instead of in CastChannelOpenFunction (Closed)
Patch Set: rebase with master Created 3 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
« no previous file with comments | « components/cast_channel/cast_socket.h ('k') | components/cast_channel/cast_socket_unittest.cc » ('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 "components/cast_channel/cast_socket.h" 5 #include "components/cast_channel/cast_socket.h"
6 6
7 #include <stdlib.h> 7 #include <stdlib.h>
8 #include <string.h> 8 #include <string.h>
9 9
10 #include <utility> 10 #include <utility>
11 11
12 #include "base/bind.h" 12 #include "base/bind.h"
13 #include "base/callback_helpers.h" 13 #include "base/callback_helpers.h"
14 #include "base/format_macros.h" 14 #include "base/format_macros.h"
15 #include "base/lazy_instance.h" 15 #include "base/lazy_instance.h"
16 #include "base/location.h" 16 #include "base/location.h"
17 #include "base/memory/ptr_util.h" 17 #include "base/memory/ptr_util.h"
18 #include "base/numerics/safe_conversions.h" 18 #include "base/numerics/safe_conversions.h"
19 #include "base/single_thread_task_runner.h" 19 #include "base/single_thread_task_runner.h"
20 #include "base/strings/string_number_conversions.h" 20 #include "base/strings/string_number_conversions.h"
21 #include "base/strings/stringprintf.h" 21 #include "base/strings/stringprintf.h"
22 #include "base/sys_byteorder.h" 22 #include "base/sys_byteorder.h"
23 #include "base/threading/thread_task_runner_handle.h" 23 #include "base/threading/thread_task_runner_handle.h"
24 #include "base/time/time.h" 24 #include "base/time/time.h"
25 #include "components/cast_channel/cast_auth_util.h" 25 #include "components/cast_channel/cast_auth_util.h"
26 #include "components/cast_channel/cast_framer.h" 26 #include "components/cast_channel/cast_framer.h"
27 #include "components/cast_channel/cast_message_util.h" 27 #include "components/cast_channel/cast_message_util.h"
28 #include "components/cast_channel/cast_transport.h" 28 #include "components/cast_channel/cast_transport.h"
29 #include "components/cast_channel/keep_alive_delegate.h"
29 #include "components/cast_channel/logger.h" 30 #include "components/cast_channel/logger.h"
30 #include "components/cast_channel/proto/cast_channel.pb.h" 31 #include "components/cast_channel/proto/cast_channel.pb.h"
31 #include "net/base/address_list.h" 32 #include "net/base/address_list.h"
32 #include "net/base/host_port_pair.h" 33 #include "net/base/host_port_pair.h"
33 #include "net/base/net_errors.h" 34 #include "net/base/net_errors.h"
34 #include "net/cert/cert_verifier.h" 35 #include "net/cert/cert_verifier.h"
35 #include "net/cert/cert_verify_result.h" 36 #include "net/cert/cert_verify_result.h"
36 #include "net/cert/ct_policy_enforcer.h" 37 #include "net/cert/ct_policy_enforcer.h"
37 #include "net/cert/multi_log_ct_verifier.h" 38 #include "net/cert/multi_log_ct_verifier.h"
38 #include "net/cert/x509_certificate.h" 39 #include "net/cert/x509_certificate.h"
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
80 verify_result->Reset(); 81 verify_result->Reset();
81 verify_result->verified_cert = params.certificate(); 82 verify_result->verified_cert = params.certificate();
82 return net::OK; 83 return net::OK;
83 } 84 }
84 }; 85 };
85 86
86 } // namespace 87 } // namespace
87 88
88 CastSocketImpl::CastSocketImpl(const net::IPEndPoint& ip_endpoint, 89 CastSocketImpl::CastSocketImpl(const net::IPEndPoint& ip_endpoint,
89 net::NetLog* net_log, 90 net::NetLog* net_log,
90 const base::TimeDelta& timeout, 91 base::TimeDelta timeout,
91 bool keep_alive, 92 base::TimeDelta liveness_timeout,
93 base::TimeDelta ping_interval,
92 const scoped_refptr<Logger>& logger, 94 const scoped_refptr<Logger>& logger,
93 uint64_t device_capabilities) 95 uint64_t device_capabilities)
94 : CastSocketImpl(ip_endpoint, 96 : CastSocketImpl(ip_endpoint,
95 net_log, 97 net_log,
96 timeout, 98 timeout,
97 keep_alive, 99 liveness_timeout,
100 ping_interval,
98 logger, 101 logger,
99 device_capabilities, 102 device_capabilities,
100 AuthContext::Create()) {} 103 AuthContext::Create()) {}
101 104
102 CastSocketImpl::CastSocketImpl(const net::IPEndPoint& ip_endpoint, 105 CastSocketImpl::CastSocketImpl(const net::IPEndPoint& ip_endpoint,
103 net::NetLog* net_log, 106 net::NetLog* net_log,
104 const base::TimeDelta& timeout, 107 base::TimeDelta timeout,
105 bool keep_alive, 108 base::TimeDelta liveness_timeout,
109 base::TimeDelta ping_interval,
106 const scoped_refptr<Logger>& logger, 110 const scoped_refptr<Logger>& logger,
107 uint64_t device_capabilities, 111 uint64_t device_capabilities,
108 const AuthContext& auth_context) 112 const AuthContext& auth_context)
109 : channel_id_(0), 113 : channel_id_(0),
110 ip_endpoint_(ip_endpoint), 114 ip_endpoint_(ip_endpoint),
111 net_log_(net_log), 115 net_log_(net_log),
112 keep_alive_(keep_alive), 116 liveness_timeout_(liveness_timeout),
117 ping_interval_(ping_interval),
113 logger_(logger), 118 logger_(logger),
114 auth_context_(auth_context), 119 auth_context_(auth_context),
115 connect_timeout_(timeout), 120 connect_timeout_(timeout),
116 connect_timeout_timer_(new base::OneShotTimer), 121 connect_timeout_timer_(new base::OneShotTimer),
117 is_canceled_(false), 122 is_canceled_(false),
118 device_capabilities_(device_capabilities), 123 device_capabilities_(device_capabilities),
119 audio_only_(false), 124 audio_only_(false),
120 connect_state_(ConnectionState::START_CONNECT), 125 connect_state_(ConnectionState::START_CONNECT),
121 error_state_(ChannelError::NONE), 126 error_state_(ChannelError::NONE),
122 ready_state_(ReadyState::NONE), 127 ready_state_(ReadyState::NONE),
(...skipping 26 matching lines...) Expand all
149 154
150 int CastSocketImpl::id() const { 155 int CastSocketImpl::id() const {
151 return channel_id_; 156 return channel_id_;
152 } 157 }
153 158
154 void CastSocketImpl::set_id(int id) { 159 void CastSocketImpl::set_id(int id) {
155 channel_id_ = id; 160 channel_id_ = id;
156 } 161 }
157 162
158 bool CastSocketImpl::keep_alive() const { 163 bool CastSocketImpl::keep_alive() const {
159 return keep_alive_; 164 return liveness_timeout_ > base::TimeDelta();
160 } 165 }
161 166
162 bool CastSocketImpl::audio_only() const { 167 bool CastSocketImpl::audio_only() const {
163 return audio_only_; 168 return audio_only_;
164 } 169 }
165 170
166 std::unique_ptr<net::TCPClientSocket> CastSocketImpl::CreateTcpSocket() { 171 std::unique_ptr<net::TCPClientSocket> CastSocketImpl::CreateTcpSocket() {
167 net::AddressList addresses(ip_endpoint_); 172 net::AddressList addresses(ip_endpoint_);
168 return std::unique_ptr<net::TCPClientSocket>( 173 return std::unique_ptr<net::TCPClientSocket>(
169 new net::TCPClientSocket(addresses, nullptr, net_log_, net_log_source_)); 174 new net::TCPClientSocket(addresses, nullptr, net_log_, net_log_source_));
(...skipping 352 matching lines...) Expand 10 before | Expand all | Expand 10 after
522 void CastSocketImpl::DoConnectCallback() { 527 void CastSocketImpl::DoConnectCallback() {
523 VLOG(1) << "DoConnectCallback (error_state = " 528 VLOG(1) << "DoConnectCallback (error_state = "
524 << ::cast_channel::ChannelErrorToString(error_state_) << ")"; 529 << ::cast_channel::ChannelErrorToString(error_state_) << ")";
525 if (connect_callback_.is_null()) { 530 if (connect_callback_.is_null()) {
526 DLOG(FATAL) << "Connection callback invoked multiple times."; 531 DLOG(FATAL) << "Connection callback invoked multiple times.";
527 return; 532 return;
528 } 533 }
529 534
530 if (error_state_ == ChannelError::NONE) { 535 if (error_state_ == ChannelError::NONE) {
531 SetReadyState(ReadyState::OPEN); 536 SetReadyState(ReadyState::OPEN);
537 if (keep_alive()) {
538 auto* keep_alive_delegate =
539 new KeepAliveDelegate(this, logger_, std::move(delegate_),
540 ping_interval_, liveness_timeout_);
541 delegate_.reset(keep_alive_delegate);
542 }
532 transport_->SetReadDelegate(std::move(delegate_)); 543 transport_->SetReadDelegate(std::move(delegate_));
533 } else { 544 } else {
534 CloseInternal(); 545 CloseInternal();
535 } 546 }
536 547
537 base::ResetAndReturn(&connect_callback_).Run(error_state_); 548 base::ResetAndReturn(&connect_callback_).Run(error_state_);
538 } 549 }
539 550
540 void CastSocketImpl::Close(const net::CompletionCallback& callback) { 551 void CastSocketImpl::Close(const net::CompletionCallback& callback) {
541 DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); 552 DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
587 void CastSocketImpl::SetErrorState(ChannelError error_state) { 598 void CastSocketImpl::SetErrorState(ChannelError error_state) {
588 VLOG_WITH_CONNECTION(1) << "SetErrorState " 599 VLOG_WITH_CONNECTION(1) << "SetErrorState "
589 << ::cast_channel::ChannelErrorToString(error_state); 600 << ::cast_channel::ChannelErrorToString(error_state);
590 DCHECK_EQ(ChannelError::NONE, error_state_); 601 DCHECK_EQ(ChannelError::NONE, error_state_);
591 error_state_ = error_state; 602 error_state_ = error_state;
592 delegate_->OnError(error_state_); 603 delegate_->OnError(error_state_);
593 } 604 }
594 605
595 } // namespace cast_channel 606 } // namespace cast_channel
596 #undef VLOG_WITH_CONNECTION 607 #undef VLOG_WITH_CONNECTION
OLDNEW
« no previous file with comments | « components/cast_channel/cast_socket.h ('k') | components/cast_channel/cast_socket_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698