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

Side by Side Diff: remoting/protocol/jingle_session.cc

Issue 7508044: Remove video_channel() from Session interface (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: - Created 9 years, 4 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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/protocol/jingle_session.h" 5 #include "remoting/protocol/jingle_session.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/message_loop.h" 8 #include "base/message_loop.h"
9 #include "base/rand_util.h" 9 #include "base/rand_util.h"
10 #include "base/stl_util.h" 10 #include "base/stl_util.h"
(...skipping 15 matching lines...) Expand all
26 namespace remoting { 26 namespace remoting {
27 27
28 namespace protocol { 28 namespace protocol {
29 29
30 const char JingleSession::kChromotingContentName[] = "chromoting"; 30 const char JingleSession::kChromotingContentName[] = "chromoting";
31 31
32 namespace { 32 namespace {
33 33
34 const char kControlChannelName[] = "control"; 34 const char kControlChannelName[] = "control";
35 const char kEventChannelName[] = "event"; 35 const char kEventChannelName[] = "event";
36 const char kVideoChannelName[] = "video";
37 36
38 const int kMasterKeyLength = 16; 37 const int kMasterKeyLength = 16;
39 const int kChannelKeyLength = 16; 38 const int kChannelKeyLength = 16;
40 39
41 std::string GenerateRandomMasterKey() { 40 std::string GenerateRandomMasterKey() {
42 std::string result; 41 std::string result;
43 result.resize(kMasterKeyLength); 42 result.resize(kMasterKeyLength);
44 base::RandBytes(&result[0], result.size()); 43 base::RandBytes(&result[0], result.size());
45 return result; 44 return result;
46 } 45 }
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
153 152
154 // Inform the StateChangeCallback, so calling code knows not to touch any 153 // Inform the StateChangeCallback, so calling code knows not to touch any
155 // channels. 154 // channels.
156 if (failed) 155 if (failed)
157 SetState(FAILED); 156 SetState(FAILED);
158 else 157 else
159 SetState(CLOSED); 158 SetState(CLOSED);
160 159
161 control_channel_socket_.reset(); 160 control_channel_socket_.reset();
162 event_channel_socket_.reset(); 161 event_channel_socket_.reset();
163 video_channel_socket_.reset();
164 STLDeleteContainerPairSecondPointers(channel_connectors_.begin(), 162 STLDeleteContainerPairSecondPointers(channel_connectors_.begin(),
165 channel_connectors_.end()); 163 channel_connectors_.end());
166 164
167 // Tear down the cricket session, including the cricket transport channels. 165 // Tear down the cricket session, including the cricket transport channels.
168 if (cricket_session_) { 166 if (cricket_session_) {
169 cricket_session_->Terminate(); 167 cricket_session_->Terminate();
170 cricket_session_->SignalState.disconnect(this); 168 cricket_session_->SignalState.disconnect(this);
171 } 169 }
172 170
173 closed_ = true; 171 closed_ = true;
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
217 net::Socket* JingleSession::control_channel() { 215 net::Socket* JingleSession::control_channel() {
218 DCHECK(CalledOnValidThread()); 216 DCHECK(CalledOnValidThread());
219 return control_channel_socket_.get(); 217 return control_channel_socket_.get();
220 } 218 }
221 219
222 net::Socket* JingleSession::event_channel() { 220 net::Socket* JingleSession::event_channel() {
223 DCHECK(CalledOnValidThread()); 221 DCHECK(CalledOnValidThread());
224 return event_channel_socket_.get(); 222 return event_channel_socket_.get();
225 } 223 }
226 224
227 net::Socket* JingleSession::video_channel() {
228 DCHECK(CalledOnValidThread());
229 return video_channel_socket_.get();
230 }
231
232 net::Socket* JingleSession::video_rtp_channel() {
233 DCHECK(CalledOnValidThread());
234 NOTREACHED();
235 return NULL;
236 }
237
238 net::Socket* JingleSession::video_rtcp_channel() {
239 DCHECK(CalledOnValidThread());
240 NOTREACHED();
241 return NULL;
242 }
243
244 const std::string& JingleSession::jid() { 225 const std::string& JingleSession::jid() {
245 // TODO(sergeyu): Fix ChromotingHost so that it doesn't call this 226 // TODO(sergeyu): Fix ChromotingHost so that it doesn't call this
246 // method on invalid thread and uncomment this DCHECK. 227 // method on invalid thread and uncomment this DCHECK.
247 // See crbug.com/88600 . 228 // See crbug.com/88600 .
248 // DCHECK(CalledOnValidThread()); 229 // DCHECK(CalledOnValidThread());
249 return jid_; 230 return jid_;
250 } 231 }
251 232
252 const CandidateSessionConfig* JingleSession::candidate_config() { 233 const CandidateSessionConfig* JingleSession::candidate_config() {
253 DCHECK(CalledOnValidThread()); 234 DCHECK(CalledOnValidThread());
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
446 // host responded with, to refer to later. 427 // host responded with, to refer to later.
447 if (cricket_session_->initiator()) { 428 if (cricket_session_->initiator()) {
448 if (!InitializeConfigFromDescription( 429 if (!InitializeConfigFromDescription(
449 cricket_session_->remote_description())) { 430 cricket_session_->remote_description())) {
450 CloseInternal(net::ERR_CONNECTION_FAILED, true); 431 CloseInternal(net::ERR_CONNECTION_FAILED, true);
451 return; 432 return;
452 } 433 }
453 } 434 }
454 435
455 CreateChannels(); 436 CreateChannels();
437
438 SetState(CONNECTED);
Wez 2011/08/10 23:36:52 From the caller's point of view, this isn't "conne
Sergey Ulanov 2011/08/11 00:33:47 I will remove CONNECTED_CHANNELS state later when
456 } 439 }
457 440
458 void JingleSession::OnTerminate() { 441 void JingleSession::OnTerminate() {
459 DCHECK(CalledOnValidThread()); 442 DCHECK(CalledOnValidThread());
460 CloseInternal(net::ERR_CONNECTION_ABORTED, false); 443 CloseInternal(net::ERR_CONNECTION_ABORTED, false);
461 } 444 }
462 445
463 void JingleSession::AcceptConnection() { 446 void JingleSession::AcceptConnection() {
447 SetState(CONNECTING);
448
464 if (!jingle_session_manager_->AcceptConnection(this, cricket_session_)) { 449 if (!jingle_session_manager_->AcceptConnection(this, cricket_session_)) {
465 Close(); 450 Close();
466 // Release session so that JingleSessionManager::SessionDestroyed() 451 // Release session so that JingleSessionManager::SessionDestroyed()
467 // doesn't try to call cricket::SessionManager::DestroySession() for it. 452 // doesn't try to call cricket::SessionManager::DestroySession() for it.
468 ReleaseSession(); 453 ReleaseSession();
469 delete this; 454 delete this;
470 return; 455 return;
471 } 456 }
472
473 // Set state to CONNECTING if the session is being accepted.
474 SetState(CONNECTING);
475 } 457 }
476 458
477 void JingleSession::AddChannelConnector( 459 void JingleSession::AddChannelConnector(
478 const std::string& name, JingleChannelConnector* connector) { 460 const std::string& name, JingleChannelConnector* connector) {
479 DCHECK(channel_connectors_.find(name) == channel_connectors_.end()); 461 DCHECK(channel_connectors_.find(name) == channel_connectors_.end());
480 462
481 const std::string& content_name = GetContentInfo()->name; 463 const std::string& content_name = GetContentInfo()->name;
482 cricket::TransportChannel* raw_channel = 464 cricket::TransportChannel* raw_channel =
483 cricket_session_->CreateChannel(content_name, name); 465 cricket_session_->CreateChannel(content_name, name);
484 466
(...skipping 20 matching lines...) Expand all
505 DCHECK_EQ(channel_connectors_[name], connector); 487 DCHECK_EQ(channel_connectors_[name], connector);
506 channel_connectors_[name] = NULL; 488 channel_connectors_[name] = NULL;
507 } 489 }
508 490
509 void JingleSession::CreateChannels() { 491 void JingleSession::CreateChannels() {
510 StreamChannelCallback stream_callback( 492 StreamChannelCallback stream_callback(
511 base::Bind(&JingleSession::OnStreamChannelConnected, 493 base::Bind(&JingleSession::OnStreamChannelConnected,
512 base::Unretained(this))); 494 base::Unretained(this)));
513 CreateStreamChannel(kControlChannelName, stream_callback); 495 CreateStreamChannel(kControlChannelName, stream_callback);
514 CreateStreamChannel(kEventChannelName, stream_callback); 496 CreateStreamChannel(kEventChannelName, stream_callback);
515 CreateStreamChannel(kVideoChannelName, stream_callback);
516 } 497 }
517 498
518 void JingleSession::OnStreamChannelConnected(const std::string& name, 499 void JingleSession::OnStreamChannelConnected(const std::string& name,
519 net::StreamSocket* socket) { 500 net::StreamSocket* socket) {
520 OnChannelConnected(name, socket); 501 OnChannelConnected(name, socket);
521 } 502 }
522 503
523 void JingleSession::OnChannelConnected(const std::string& name, 504 void JingleSession::OnChannelConnected(const std::string& name,
524 net::Socket* socket) { 505 net::Socket* socket) {
525 if (!socket) { 506 if (!socket) {
526 LOG(ERROR) << "Failed to connect channel " << name 507 LOG(ERROR) << "Failed to connect channel " << name
527 << ". Terminating connection"; 508 << ". Terminating connection";
528 CloseInternal(net::ERR_CONNECTION_CLOSED, true); 509 CloseInternal(net::ERR_CONNECTION_CLOSED, true);
529 return; 510 return;
530 } 511 }
531 512
532 if (name == kControlChannelName) { 513 if (name == kControlChannelName) {
533 control_channel_socket_.reset(socket); 514 control_channel_socket_.reset(socket);
534 } else if (name == kEventChannelName) { 515 } else if (name == kEventChannelName) {
535 event_channel_socket_.reset(socket); 516 event_channel_socket_.reset(socket);
536 } else if (name == kVideoChannelName) {
537 video_channel_socket_.reset(socket);
538 } else { 517 } else {
539 NOTREACHED(); 518 NOTREACHED();
540 } 519 }
541 520
542 if (control_channel_socket_.get() && event_channel_socket_.get() && 521 if (control_channel_socket_.get() && event_channel_socket_.get())
543 video_channel_socket_.get()) { 522 SetState(CONNECTED_CHANNELS);
544 // TODO(sergeyu): State should be set to CONNECTED in OnAccept
545 // independent of the channels state.
546 SetState(CONNECTED);
547 }
548 } 523 }
549 524
550 const cricket::ContentInfo* JingleSession::GetContentInfo() const { 525 const cricket::ContentInfo* JingleSession::GetContentInfo() const {
551 const cricket::SessionDescription* session_description; 526 const cricket::SessionDescription* session_description;
552 // If we initiate the session, we get to specify the content name. When 527 // If we initiate the session, we get to specify the content name. When
553 // accepting one, the remote end specifies it. 528 // accepting one, the remote end specifies it.
554 if (cricket_session_->initiator()) { 529 if (cricket_session_->initiator()) {
555 session_description = cricket_session_->local_description(); 530 session_description = cricket_session_->local_description();
556 } else { 531 } else {
557 session_description = cricket_session_->remote_description(); 532 session_description = cricket_session_->remote_description();
(...skipping 13 matching lines...) Expand all
571 546
572 state_ = new_state; 547 state_ = new_state;
573 if (!closed_ && state_change_callback_.get()) 548 if (!closed_ && state_change_callback_.get())
574 state_change_callback_->Run(new_state); 549 state_change_callback_->Run(new_state);
575 } 550 }
576 } 551 }
577 552
578 } // namespace protocol 553 } // namespace protocol
579 554
580 } // namespace remoting 555 } // namespace remoting
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698