| Index: remoting/protocol/jingle_session.cc
|
| diff --git a/remoting/protocol/jingle_chromotocol_connection.cc b/remoting/protocol/jingle_session.cc
|
| similarity index 55%
|
| rename from remoting/protocol/jingle_chromotocol_connection.cc
|
| rename to remoting/protocol/jingle_session.cc
|
| index 01b7bace685b3e38a08ec1f84fa2c72c29e6bc16..4ed6b4fd7e696bd683543c1110417b504bf9f5ef 100644
|
| --- a/remoting/protocol/jingle_chromotocol_connection.cc
|
| +++ b/remoting/protocol/jingle_session.cc
|
| @@ -2,7 +2,7 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#include "remoting/protocol/jingle_chromotocol_connection.h"
|
| +#include "remoting/protocol/jingle_session.h"
|
|
|
| #include "base/message_loop.h"
|
| #include "net/base/net_errors.h"
|
| @@ -10,17 +10,18 @@
|
| #include "remoting/jingle_glue/channel_socket_adapter.h"
|
| #include "remoting/jingle_glue/jingle_thread.h"
|
| #include "remoting/jingle_glue/stream_socket_adapter.h"
|
| -#include "remoting/protocol/jingle_chromotocol_server.h"
|
| +#include "remoting/protocol/jingle_session_manager.h"
|
| #include "third_party/libjingle/source/talk/base/thread.h"
|
| #include "third_party/libjingle/source/talk/p2p/base/session.h"
|
| #include "third_party/libjingle/source/talk/session/tunnel/pseudotcpchannel.h"
|
|
|
| using cricket::BaseSession;
|
| using cricket::PseudoTcpChannel;
|
| -using cricket::Session;
|
|
|
| namespace remoting {
|
|
|
| +namespace protocol {
|
| +
|
| namespace {
|
| const char kControlChannelName[] = "control";
|
| const char kEventChannelName[] = "event";
|
| @@ -29,118 +30,118 @@ const char kVideoRtpChannelName[] = "videortp";
|
| const char kVideoRtcpChannelName[] = "videortcp";
|
| } // namespace
|
|
|
| -const char JingleChromotocolConnection::kChromotingContentName[] = "chromoting";
|
| +const char JingleSession::kChromotingContentName[] = "chromoting";
|
|
|
| -JingleChromotocolConnection::JingleChromotocolConnection(
|
| - JingleChromotocolServer* server)
|
| - : server_(server),
|
| +JingleSession::JingleSession(
|
| + JingleSessionManager* jingle_session_manager)
|
| + : jingle_session_manager_(jingle_session_manager),
|
| state_(INITIALIZING),
|
| closed_(false),
|
| - session_(NULL),
|
| + cricket_session_(NULL),
|
| event_channel_(NULL),
|
| video_channel_(NULL) {
|
| }
|
|
|
| -JingleChromotocolConnection::~JingleChromotocolConnection() {
|
| +JingleSession::~JingleSession() {
|
| DCHECK(closed_);
|
| }
|
|
|
| -void JingleChromotocolConnection::Init(Session* session) {
|
| - DCHECK_EQ(server_->message_loop(), MessageLoop::current());
|
| +void JingleSession::Init(cricket::Session* cricket_session) {
|
| + DCHECK_EQ(jingle_session_manager_->message_loop(), MessageLoop::current());
|
|
|
| - session_ = session;
|
| - jid_ = session_->remote_name();
|
| - session_->SignalState.connect(
|
| - this, &JingleChromotocolConnection::OnSessionState);
|
| + cricket_session_ = cricket_session;
|
| + jid_ = cricket_session_->remote_name();
|
| + cricket_session_->SignalState.connect(
|
| + this, &JingleSession::OnSessionState);
|
| }
|
|
|
| -bool JingleChromotocolConnection::HasSession(cricket::Session* session) {
|
| - return session_ == session;
|
| +bool JingleSession::HasSession(cricket::Session* cricket_session) {
|
| + return cricket_session_ == cricket_session;
|
| }
|
|
|
| -Session* JingleChromotocolConnection::ReleaseSession() {
|
| - DCHECK_EQ(server_->message_loop(), MessageLoop::current());
|
| +cricket::Session* JingleSession::ReleaseSession() {
|
| + DCHECK_EQ(jingle_session_manager_->message_loop(), MessageLoop::current());
|
|
|
| SetState(CLOSED);
|
| - Session* session = session_;
|
| - if (session_)
|
| - session_->SignalState.disconnect(this);
|
| - session_ = NULL;
|
| + cricket::Session* session = cricket_session_;
|
| + if (cricket_session_)
|
| + cricket_session_->SignalState.disconnect(this);
|
| + cricket_session_ = NULL;
|
| closed_ = true;
|
| return session;
|
| }
|
|
|
| -void JingleChromotocolConnection::SetStateChangeCallback(
|
| +void JingleSession::SetStateChangeCallback(
|
| StateChangeCallback* callback) {
|
| - DCHECK_EQ(server_->message_loop(), MessageLoop::current());
|
| + DCHECK_EQ(jingle_session_manager_->message_loop(), MessageLoop::current());
|
| DCHECK(callback);
|
| state_change_callback_.reset(callback);
|
| }
|
|
|
| -net::Socket* JingleChromotocolConnection::control_channel() {
|
| - DCHECK_EQ(server_->message_loop(), MessageLoop::current());
|
| +net::Socket* JingleSession::control_channel() {
|
| + DCHECK_EQ(jingle_session_manager_->message_loop(), MessageLoop::current());
|
| return control_channel_adapter_.get();
|
| }
|
|
|
| -net::Socket* JingleChromotocolConnection::event_channel() {
|
| - DCHECK_EQ(server_->message_loop(), MessageLoop::current());
|
| +net::Socket* JingleSession::event_channel() {
|
| + DCHECK_EQ(jingle_session_manager_->message_loop(), MessageLoop::current());
|
| return event_channel_adapter_.get();
|
| }
|
|
|
| // TODO(sergeyu): Remove this method after we switch to RTP.
|
| -net::Socket* JingleChromotocolConnection::video_channel() {
|
| - DCHECK_EQ(server_->message_loop(), MessageLoop::current());
|
| +net::Socket* JingleSession::video_channel() {
|
| + DCHECK_EQ(jingle_session_manager_->message_loop(), MessageLoop::current());
|
| return video_channel_adapter_.get();
|
| }
|
|
|
| -net::Socket* JingleChromotocolConnection::video_rtp_channel() {
|
| - DCHECK_EQ(server_->message_loop(), MessageLoop::current());
|
| +net::Socket* JingleSession::video_rtp_channel() {
|
| + DCHECK_EQ(jingle_session_manager_->message_loop(), MessageLoop::current());
|
| return video_rtp_channel_.get();
|
| }
|
|
|
| -net::Socket* JingleChromotocolConnection::video_rtcp_channel() {
|
| - DCHECK_EQ(server_->message_loop(), MessageLoop::current());
|
| +net::Socket* JingleSession::video_rtcp_channel() {
|
| + DCHECK_EQ(jingle_session_manager_->message_loop(), MessageLoop::current());
|
| return video_rtcp_channel_.get();
|
| }
|
|
|
| -const std::string& JingleChromotocolConnection::jid() {
|
| +const std::string& JingleSession::jid() {
|
| // No synchronization is needed because jid_ is not changed
|
| // after new connection is passed to JingleChromotocolServer callback.
|
| return jid_;
|
| }
|
|
|
| -MessageLoop* JingleChromotocolConnection::message_loop() {
|
| - return server_->message_loop();
|
| +MessageLoop* JingleSession::message_loop() {
|
| + return jingle_session_manager_->message_loop();
|
| }
|
|
|
| const CandidateChromotocolConfig*
|
| -JingleChromotocolConnection::candidate_config() {
|
| +JingleSession::candidate_config() {
|
| DCHECK(candidate_config_.get());
|
| return candidate_config_.get();
|
| }
|
|
|
| -void JingleChromotocolConnection::set_candidate_config(
|
| +void JingleSession::set_candidate_config(
|
| const CandidateChromotocolConfig* candidate_config) {
|
| DCHECK(!candidate_config_.get());
|
| DCHECK(candidate_config);
|
| candidate_config_.reset(candidate_config);
|
| }
|
|
|
| -const ChromotocolConfig* JingleChromotocolConnection::config() {
|
| +const ChromotocolConfig* JingleSession::config() {
|
| DCHECK(config_.get());
|
| return config_.get();
|
| }
|
|
|
| -void JingleChromotocolConnection::set_config(const ChromotocolConfig* config) {
|
| +void JingleSession::set_config(const ChromotocolConfig* config) {
|
| DCHECK(!config_.get());
|
| DCHECK(config);
|
| config_.reset(config);
|
| }
|
|
|
| -void JingleChromotocolConnection::Close(Task* closed_task) {
|
| - if (MessageLoop::current() != server_->message_loop()) {
|
| - server_->message_loop()->PostTask(
|
| - FROM_HERE, NewRunnableMethod(this, &JingleChromotocolConnection::Close,
|
| +void JingleSession::Close(Task* closed_task) {
|
| + if (MessageLoop::current() != jingle_session_manager_->message_loop()) {
|
| + jingle_session_manager_->message_loop()->PostTask(
|
| + FROM_HERE, NewRunnableMethod(this, &JingleSession::Close,
|
| closed_task));
|
| return;
|
| }
|
| @@ -150,7 +151,7 @@ void JingleChromotocolConnection::Close(Task* closed_task) {
|
| control_channel_adapter_->Close(net::ERR_CONNECTION_CLOSED);
|
|
|
| if (control_channel_) {
|
| - control_channel_->OnSessionTerminate(session_);
|
| + control_channel_->OnSessionTerminate(cricket_session_);
|
| control_channel_ = NULL;
|
| }
|
|
|
| @@ -158,7 +159,7 @@ void JingleChromotocolConnection::Close(Task* closed_task) {
|
| event_channel_adapter_->Close(net::ERR_CONNECTION_CLOSED);
|
|
|
| if (event_channel_) {
|
| - event_channel_->OnSessionTerminate(session_);
|
| + event_channel_->OnSessionTerminate(cricket_session_);
|
| event_channel_ = NULL;
|
| }
|
|
|
| @@ -166,7 +167,7 @@ void JingleChromotocolConnection::Close(Task* closed_task) {
|
| video_channel_adapter_->Close(net::ERR_CONNECTION_CLOSED);
|
|
|
| if (video_channel_) {
|
| - video_channel_->OnSessionTerminate(session_);
|
| + video_channel_->OnSessionTerminate(cricket_session_);
|
| video_channel_ = NULL;
|
| }
|
|
|
| @@ -175,8 +176,8 @@ void JingleChromotocolConnection::Close(Task* closed_task) {
|
| if (video_rtcp_channel_.get())
|
| video_rtcp_channel_->Close(net::ERR_CONNECTION_CLOSED);
|
|
|
| - if (session_)
|
| - session_->Terminate();
|
| + if (cricket_session_)
|
| + cricket_session_->Terminate();
|
|
|
| SetState(CLOSED);
|
|
|
| @@ -187,29 +188,29 @@ void JingleChromotocolConnection::Close(Task* closed_task) {
|
| delete closed_task;
|
| }
|
|
|
| -void JingleChromotocolConnection::OnSessionState(
|
| +void JingleSession::OnSessionState(
|
| BaseSession* session, BaseSession::State state) {
|
| - DCHECK_EQ(session_, session);
|
| + DCHECK_EQ(cricket_session_, session);
|
|
|
| switch (state) {
|
| - case Session::STATE_SENTINITIATE:
|
| - case Session::STATE_RECEIVEDINITIATE:
|
| + case cricket::Session::STATE_SENTINITIATE:
|
| + case cricket::Session::STATE_RECEIVEDINITIATE:
|
| OnInitiate();
|
| break;
|
|
|
| - case Session::STATE_SENTACCEPT:
|
| - case Session::STATE_RECEIVEDACCEPT:
|
| + case cricket::Session::STATE_SENTACCEPT:
|
| + case cricket::Session::STATE_RECEIVEDACCEPT:
|
| OnAccept();
|
| break;
|
|
|
| - case Session::STATE_SENTTERMINATE:
|
| - case Session::STATE_RECEIVEDTERMINATE:
|
| - case Session::STATE_SENTREJECT:
|
| - case Session::STATE_RECEIVEDREJECT:
|
| + case cricket::Session::STATE_SENTTERMINATE:
|
| + case cricket::Session::STATE_RECEIVEDTERMINATE:
|
| + case cricket::Session::STATE_SENTREJECT:
|
| + case cricket::Session::STATE_RECEIVEDREJECT:
|
| OnTerminate();
|
| break;
|
|
|
| - case Session::STATE_DEINIT:
|
| + case cricket::Session::STATE_DEINIT:
|
| // Close() must have been called before this.
|
| NOTREACHED();
|
| break;
|
| @@ -220,17 +221,17 @@ void JingleChromotocolConnection::OnSessionState(
|
| }
|
| }
|
|
|
| -void JingleChromotocolConnection::OnInitiate() {
|
| - jid_ = session_->remote_name();
|
| +void JingleSession::OnInitiate() {
|
| + jid_ = cricket_session_->remote_name();
|
|
|
| std::string content_name;
|
| - // If we initiate the connection, we get to specify the content name. When
|
| + // If we initiate the session, we get to specify the content name. When
|
| // accepting one, the remote end specifies it.
|
| - if (session_->initiator()) {
|
| + if (cricket_session_->initiator()) {
|
| content_name = kChromotingContentName;
|
| } else {
|
| const cricket::ContentInfo* content;
|
| - content = session_->remote_description()->FirstContentByType(
|
| + content = cricket_session_->remote_description()->FirstContentByType(
|
| kChromotingXmlNamespace);
|
| CHECK(content);
|
| content_name = content->name;
|
| @@ -238,45 +239,48 @@ void JingleChromotocolConnection::OnInitiate() {
|
|
|
| // Create video RTP channels.
|
| video_rtp_channel_.reset(new TransportChannelSocketAdapter(
|
| - session_->CreateChannel(content_name, kVideoRtpChannelName)));
|
| + cricket_session_->CreateChannel(content_name, kVideoRtpChannelName)));
|
| video_rtcp_channel_.reset(new TransportChannelSocketAdapter(
|
| - session_->CreateChannel(content_name, kVideoRtcpChannelName)));
|
| + cricket_session_->CreateChannel(content_name, kVideoRtcpChannelName)));
|
|
|
| // Create control channel.
|
| - control_channel_ = new PseudoTcpChannel(server_->jingle_thread(), session_);
|
| + control_channel_ = new PseudoTcpChannel(
|
| + jingle_session_manager_->jingle_thread(), cricket_session_);
|
| control_channel_->Connect(content_name, kControlChannelName);
|
| control_channel_adapter_.reset(new StreamSocketAdapter(
|
| control_channel_->GetStream()));
|
|
|
| // Create event channel.
|
| - event_channel_ = new PseudoTcpChannel(server_->jingle_thread(), session_);
|
| + event_channel_ = new PseudoTcpChannel(
|
| + jingle_session_manager_->jingle_thread(), cricket_session_);
|
| event_channel_->Connect(content_name, kEventChannelName);
|
| event_channel_adapter_.reset(new StreamSocketAdapter(
|
| event_channel_->GetStream()));
|
|
|
| // Create video channel.
|
| // TODO(sergeyu): Remove video channel when we are ready to switch to RTP.
|
| - video_channel_ = new PseudoTcpChannel(server_->jingle_thread(), session_);
|
| + video_channel_ = new PseudoTcpChannel(
|
| + jingle_session_manager_->jingle_thread(), cricket_session_);
|
| video_channel_->Connect(content_name, kVideoChannelName);
|
| video_channel_adapter_.reset(new StreamSocketAdapter(
|
| video_channel_->GetStream()));
|
|
|
| - if (!session_->initiator())
|
| - server_->AcceptConnection(this, session_);
|
| + if (!cricket_session_->initiator())
|
| + jingle_session_manager_->AcceptConnection(this, cricket_session_);
|
|
|
| SetState(CONNECTING);
|
| }
|
|
|
| -void JingleChromotocolConnection::OnAccept() {
|
| - // Set config for outgoing connections.
|
| - if (session_->initiator()) {
|
| +void JingleSession::OnAccept() {
|
| + // Set the config if we are the one who initiated the session.
|
| + if (cricket_session_->initiator()) {
|
| const cricket::ContentInfo* content =
|
| - session_->remote_description()->FirstContentByType(
|
| + cricket_session_->remote_description()->FirstContentByType(
|
| kChromotingXmlNamespace);
|
| CHECK(content);
|
|
|
| - const ChromotocolContentDescription* content_description =
|
| - static_cast<const ChromotocolContentDescription*>(content->description);
|
| + const protocol::ContentDescription* content_description =
|
| + static_cast<const protocol::ContentDescription*>(content->description);
|
| ChromotocolConfig* config = content_description->config()->GetFinalConfig();
|
|
|
| // Terminate the session if the config we received is invalid.
|
| @@ -284,7 +288,7 @@ void JingleChromotocolConnection::OnAccept() {
|
| // TODO(sergeyu): Inform the user that the host is misbehaving?
|
| LOG(ERROR) << "Terminating outgoing session after an "
|
| "invalid session description has been received.";
|
| - session_->Terminate();
|
| + cricket_session_->Terminate();
|
| return;
|
| }
|
|
|
| @@ -294,25 +298,25 @@ void JingleChromotocolConnection::OnAccept() {
|
| SetState(CONNECTED);
|
| }
|
|
|
| -void JingleChromotocolConnection::OnTerminate() {
|
| +void JingleSession::OnTerminate() {
|
| if (control_channel_adapter_.get())
|
| control_channel_adapter_->Close(net::ERR_CONNECTION_ABORTED);
|
| if (control_channel_) {
|
| - control_channel_->OnSessionTerminate(session_);
|
| + control_channel_->OnSessionTerminate(cricket_session_);
|
| control_channel_ = NULL;
|
| }
|
|
|
| if (event_channel_adapter_.get())
|
| event_channel_adapter_->Close(net::ERR_CONNECTION_ABORTED);
|
| if (event_channel_) {
|
| - event_channel_->OnSessionTerminate(session_);
|
| + event_channel_->OnSessionTerminate(cricket_session_);
|
| event_channel_ = NULL;
|
| }
|
|
|
| if (video_channel_adapter_.get())
|
| video_channel_adapter_->Close(net::ERR_CONNECTION_ABORTED);
|
| if (video_channel_) {
|
| - video_channel_->OnSessionTerminate(session_);
|
| + video_channel_->OnSessionTerminate(cricket_session_);
|
| video_channel_ = NULL;
|
| }
|
|
|
| @@ -326,7 +330,7 @@ void JingleChromotocolConnection::OnTerminate() {
|
| closed_ = true;
|
| }
|
|
|
| -void JingleChromotocolConnection::SetState(State new_state) {
|
| +void JingleSession::SetState(State new_state) {
|
| if (new_state != state_) {
|
| state_ = new_state;
|
| if (!closed_ && state_change_callback_.get())
|
| @@ -334,4 +338,6 @@ void JingleChromotocolConnection::SetState(State new_state) {
|
| }
|
| }
|
|
|
| +} // namespace protocol
|
| +
|
| } // namespace remoting
|
|
|