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

Side by Side Diff: remoting/signaling/xmpp_signal_strategy.cc

Issue 1864213002: Convert //remoting to use std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Mac IWYU Created 4 years, 8 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
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 "remoting/signaling/xmpp_signal_strategy.h" 5 #include "remoting/signaling/xmpp_signal_strategy.h"
6 6
7 #include <utility> 7 #include <utility>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
60 const XmppServerConfig& xmpp_server_config); 60 const XmppServerConfig& xmpp_server_config);
61 ~Core() override; 61 ~Core() override;
62 62
63 void Connect(); 63 void Connect();
64 void Disconnect(); 64 void Disconnect();
65 State GetState() const; 65 State GetState() const;
66 Error GetError() const; 66 Error GetError() const;
67 std::string GetLocalJid() const; 67 std::string GetLocalJid() const;
68 void AddListener(Listener* listener); 68 void AddListener(Listener* listener);
69 void RemoveListener(Listener* listener); 69 void RemoveListener(Listener* listener);
70 bool SendStanza(scoped_ptr<buzz::XmlElement> stanza); 70 bool SendStanza(std::unique_ptr<buzz::XmlElement> stanza);
71 71
72 void SetAuthInfo(const std::string& username, 72 void SetAuthInfo(const std::string& username,
73 const std::string& auth_token); 73 const std::string& auth_token);
74 74
75 private: 75 private:
76 enum class TlsState { 76 enum class TlsState {
77 // StartTls() hasn't been called. |socket_| is not encrypted. 77 // StartTls() hasn't been called. |socket_| is not encrypted.
78 NOT_REQUESTED, 78 NOT_REQUESTED,
79 79
80 // StartTls() has been called. Waiting for |writer_| to finish writing 80 // StartTls() has been called. Waiting for |writer_| to finish writing
(...skipping 11 matching lines...) Expand all
92 void OnTlsConnected(int result); 92 void OnTlsConnected(int result);
93 93
94 void ReadSocket(); 94 void ReadSocket();
95 void OnReadResult(int result); 95 void OnReadResult(int result);
96 void HandleReadResult(int result); 96 void HandleReadResult(int result);
97 97
98 // XmppLoginHandler::Delegate interface. 98 // XmppLoginHandler::Delegate interface.
99 void SendMessage(const std::string& message) override; 99 void SendMessage(const std::string& message) override;
100 void StartTls() override; 100 void StartTls() override;
101 void OnHandshakeDone(const std::string& jid, 101 void OnHandshakeDone(const std::string& jid,
102 scoped_ptr<XmppStreamParser> parser) override; 102 std::unique_ptr<XmppStreamParser> parser) override;
103 void OnLoginHandlerError(SignalStrategy::Error error) override; 103 void OnLoginHandlerError(SignalStrategy::Error error) override;
104 104
105 // Callback for BufferedSocketWriter. 105 // Callback for BufferedSocketWriter.
106 void OnMessageSent(); 106 void OnMessageSent();
107 107
108 // Event handlers for XmppStreamParser. 108 // Event handlers for XmppStreamParser.
109 void OnStanza(const scoped_ptr<buzz::XmlElement> stanza); 109 void OnStanza(const std::unique_ptr<buzz::XmlElement> stanza);
110 void OnParserError(); 110 void OnParserError();
111 111
112 void OnNetworkError(int error); 112 void OnNetworkError(int error);
113 113
114 void SendKeepAlive(); 114 void SendKeepAlive();
115 115
116 net::ClientSocketFactory* socket_factory_; 116 net::ClientSocketFactory* socket_factory_;
117 scoped_refptr<net::URLRequestContextGetter> request_context_getter_; 117 scoped_refptr<net::URLRequestContextGetter> request_context_getter_;
118 XmppServerConfig xmpp_server_config_; 118 XmppServerConfig xmpp_server_config_;
119 119
120 // Used by the |socket_|. 120 // Used by the |socket_|.
121 scoped_ptr<net::CertVerifier> cert_verifier_; 121 std::unique_ptr<net::CertVerifier> cert_verifier_;
122 scoped_ptr<net::TransportSecurityState> transport_security_state_; 122 std::unique_ptr<net::TransportSecurityState> transport_security_state_;
123 123
124 scoped_ptr<net::StreamSocket> socket_; 124 std::unique_ptr<net::StreamSocket> socket_;
125 scoped_ptr<BufferedSocketWriter> writer_; 125 std::unique_ptr<BufferedSocketWriter> writer_;
126 int pending_writes_ = 0; 126 int pending_writes_ = 0;
127 scoped_refptr<net::IOBuffer> read_buffer_; 127 scoped_refptr<net::IOBuffer> read_buffer_;
128 bool read_pending_ = false; 128 bool read_pending_ = false;
129 129
130 TlsState tls_state_ = TlsState::NOT_REQUESTED; 130 TlsState tls_state_ = TlsState::NOT_REQUESTED;
131 131
132 scoped_ptr<XmppLoginHandler> login_handler_; 132 std::unique_ptr<XmppLoginHandler> login_handler_;
133 scoped_ptr<XmppStreamParser> stream_parser_; 133 std::unique_ptr<XmppStreamParser> stream_parser_;
134 std::string jid_; 134 std::string jid_;
135 135
136 Error error_ = OK; 136 Error error_ = OK;
137 137
138 base::ObserverList<Listener, true> listeners_; 138 base::ObserverList<Listener, true> listeners_;
139 139
140 base::Timer keep_alive_timer_; 140 base::Timer keep_alive_timer_;
141 141
142 base::ThreadChecker thread_checker_; 142 base::ThreadChecker thread_checker_;
143 143
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
229 void XmppSignalStrategy::Core::AddListener(Listener* listener) { 229 void XmppSignalStrategy::Core::AddListener(Listener* listener) {
230 DCHECK(thread_checker_.CalledOnValidThread()); 230 DCHECK(thread_checker_.CalledOnValidThread());
231 listeners_.AddObserver(listener); 231 listeners_.AddObserver(listener);
232 } 232 }
233 233
234 void XmppSignalStrategy::Core::RemoveListener(Listener* listener) { 234 void XmppSignalStrategy::Core::RemoveListener(Listener* listener) {
235 DCHECK(thread_checker_.CalledOnValidThread()); 235 DCHECK(thread_checker_.CalledOnValidThread());
236 listeners_.RemoveObserver(listener); 236 listeners_.RemoveObserver(listener);
237 } 237 }
238 238
239 bool XmppSignalStrategy::Core::SendStanza(scoped_ptr<buzz::XmlElement> stanza) { 239 bool XmppSignalStrategy::Core::SendStanza(
240 std::unique_ptr<buzz::XmlElement> stanza) {
240 DCHECK(thread_checker_.CalledOnValidThread()); 241 DCHECK(thread_checker_.CalledOnValidThread());
241 242
242 if (!stream_parser_) { 243 if (!stream_parser_) {
243 VLOG(0) << "Dropping signalling message because XMPP is not connected."; 244 VLOG(0) << "Dropping signalling message because XMPP is not connected.";
244 return false; 245 return false;
245 } 246 }
246 247
247 SendMessage(stanza->Str()); 248 SendMessage(stanza->Str());
248 249
249 // Return false if the SendMessage() call above resulted in the SignalStrategy 250 // Return false if the SendMessage() call above resulted in the SignalStrategy
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
281 return; 282 return;
282 } 283 }
283 284
284 tls_state_ = TlsState::CONNECTING; 285 tls_state_ = TlsState::CONNECTING;
285 286
286 // Reset the writer so we don't try to write to the raw socket anymore. 287 // Reset the writer so we don't try to write to the raw socket anymore.
287 writer_.reset(); 288 writer_.reset();
288 289
289 DCHECK(!read_pending_); 290 DCHECK(!read_pending_);
290 291
291 scoped_ptr<net::ClientSocketHandle> socket_handle( 292 std::unique_ptr<net::ClientSocketHandle> socket_handle(
292 new net::ClientSocketHandle()); 293 new net::ClientSocketHandle());
293 socket_handle->SetSocket(std::move(socket_)); 294 socket_handle->SetSocket(std::move(socket_));
294 295
295 cert_verifier_ = net::CertVerifier::CreateDefault(); 296 cert_verifier_ = net::CertVerifier::CreateDefault();
296 transport_security_state_.reset(new net::TransportSecurityState()); 297 transport_security_state_.reset(new net::TransportSecurityState());
297 net::SSLClientSocketContext context; 298 net::SSLClientSocketContext context;
298 context.cert_verifier = cert_verifier_.get(); 299 context.cert_verifier = cert_verifier_.get();
299 context.transport_security_state = transport_security_state_.get(); 300 context.transport_security_state = transport_security_state_.get();
300 301
301 socket_ = socket_factory_->CreateSSLClientSocket( 302 socket_ = socket_factory_->CreateSSLClientSocket(
302 std::move(socket_handle), 303 std::move(socket_handle),
303 net::HostPortPair(xmpp_server_config_.host, kDefaultHttpsPort), 304 net::HostPortPair(xmpp_server_config_.host, kDefaultHttpsPort),
304 net::SSLConfig(), context); 305 net::SSLConfig(), context);
305 306
306 int result = socket_->Connect( 307 int result = socket_->Connect(
307 base::Bind(&Core::OnTlsConnected, base::Unretained(this))); 308 base::Bind(&Core::OnTlsConnected, base::Unretained(this)));
308 if (result != net::ERR_IO_PENDING) 309 if (result != net::ERR_IO_PENDING)
309 OnTlsConnected(result); 310 OnTlsConnected(result);
310 } 311 }
311 312
312 void XmppSignalStrategy::Core::OnHandshakeDone( 313 void XmppSignalStrategy::Core::OnHandshakeDone(
313 const std::string& jid, 314 const std::string& jid,
314 scoped_ptr<XmppStreamParser> parser) { 315 std::unique_ptr<XmppStreamParser> parser) {
315 DCHECK(thread_checker_.CalledOnValidThread()); 316 DCHECK(thread_checker_.CalledOnValidThread());
316 317
317 jid_ = jid; 318 jid_ = jid;
318 stream_parser_ = std::move(parser); 319 stream_parser_ = std::move(parser);
319 stream_parser_->SetCallbacks( 320 stream_parser_->SetCallbacks(
320 base::Bind(&Core::OnStanza, base::Unretained(this)), 321 base::Bind(&Core::OnStanza, base::Unretained(this)),
321 base::Bind(&Core::OnParserError, base::Unretained(this))); 322 base::Bind(&Core::OnParserError, base::Unretained(this)));
322 323
323 // Don't need |login_handler_| anymore. 324 // Don't need |login_handler_| anymore.
324 login_handler_.reset(); 325 login_handler_.reset();
(...skipping 13 matching lines...) Expand all
338 void XmppSignalStrategy::Core::OnMessageSent() { 339 void XmppSignalStrategy::Core::OnMessageSent() {
339 DCHECK(thread_checker_.CalledOnValidThread()); 340 DCHECK(thread_checker_.CalledOnValidThread());
340 341
341 if (tls_state_ == TlsState::WAITING_FOR_FLUSH && 342 if (tls_state_ == TlsState::WAITING_FOR_FLUSH &&
342 !writer_->has_data_pending()) { 343 !writer_->has_data_pending()) {
343 StartTls(); 344 StartTls();
344 } 345 }
345 } 346 }
346 347
347 void XmppSignalStrategy::Core::OnStanza( 348 void XmppSignalStrategy::Core::OnStanza(
348 const scoped_ptr<buzz::XmlElement> stanza) { 349 const std::unique_ptr<buzz::XmlElement> stanza) {
349 DCHECK(thread_checker_.CalledOnValidThread()); 350 DCHECK(thread_checker_.CalledOnValidThread());
350 351
351 base::ObserverListBase<Listener>::Iterator it(&listeners_); 352 base::ObserverListBase<Listener>::Iterator it(&listeners_);
352 for (Listener* listener = it.GetNext(); listener; listener = it.GetNext()) { 353 for (Listener* listener = it.GetNext(); listener; listener = it.GetNext()) {
353 if (listener->OnSignalStrategyIncomingStanza(stanza.get())) 354 if (listener->OnSignalStrategyIncomingStanza(stanza.get()))
354 return; 355 return;
355 } 356 }
356 } 357 }
357 358
358 void XmppSignalStrategy::Core::OnParserError() { 359 void XmppSignalStrategy::Core::OnParserError() {
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
519 return core_->GetLocalJid(); 520 return core_->GetLocalJid();
520 } 521 }
521 522
522 void XmppSignalStrategy::AddListener(Listener* listener) { 523 void XmppSignalStrategy::AddListener(Listener* listener) {
523 core_->AddListener(listener); 524 core_->AddListener(listener);
524 } 525 }
525 526
526 void XmppSignalStrategy::RemoveListener(Listener* listener) { 527 void XmppSignalStrategy::RemoveListener(Listener* listener) {
527 core_->RemoveListener(listener); 528 core_->RemoveListener(listener);
528 } 529 }
529 bool XmppSignalStrategy::SendStanza(scoped_ptr<buzz::XmlElement> stanza) { 530 bool XmppSignalStrategy::SendStanza(std::unique_ptr<buzz::XmlElement> stanza) {
530 return core_->SendStanza(std::move(stanza)); 531 return core_->SendStanza(std::move(stanza));
531 } 532 }
532 533
533 std::string XmppSignalStrategy::GetNextId() { 534 std::string XmppSignalStrategy::GetNextId() {
534 return base::Uint64ToString(base::RandUint64()); 535 return base::Uint64ToString(base::RandUint64());
535 } 536 }
536 537
537 void XmppSignalStrategy::SetAuthInfo(const std::string& username, 538 void XmppSignalStrategy::SetAuthInfo(const std::string& username,
538 const std::string& auth_token) { 539 const std::string& auth_token) {
539 core_->SetAuthInfo(username, auth_token); 540 core_->SetAuthInfo(username, auth_token);
540 } 541 }
541 542
542 } // namespace remoting 543 } // namespace remoting
OLDNEW
« no previous file with comments | « remoting/signaling/xmpp_signal_strategy.h ('k') | remoting/signaling/xmpp_signal_strategy_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698