OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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_manager.h" | 5 #include "remoting/protocol/jingle_session_manager.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "remoting/protocol/authenticator.h" | 8 #include "remoting/protocol/authenticator.h" |
9 #include "remoting/protocol/content_description.h" | 9 #include "remoting/protocol/content_description.h" |
10 #include "remoting/protocol/jingle_messages.h" | 10 #include "remoting/protocol/jingle_messages.h" |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
45 } | 45 } |
46 | 46 |
47 void JingleSessionManager::set_protocol_config( | 47 void JingleSessionManager::set_protocol_config( |
48 scoped_ptr<CandidateSessionConfig> config) { | 48 scoped_ptr<CandidateSessionConfig> config) { |
49 protocol_config_ = config.Pass(); | 49 protocol_config_ = config.Pass(); |
50 } | 50 } |
51 | 51 |
52 scoped_ptr<Session> JingleSessionManager::Connect( | 52 scoped_ptr<Session> JingleSessionManager::Connect( |
53 const std::string& host_jid, | 53 const std::string& host_jid, |
54 scoped_ptr<Authenticator> authenticator) { | 54 scoped_ptr<Authenticator> authenticator) { |
55 // Notify |transport_factory_| that it may be used soon. | |
56 transport_factory_->PrepareTokens(); | |
57 | |
58 scoped_ptr<JingleSession> session(new JingleSession(this)); | 55 scoped_ptr<JingleSession> session(new JingleSession(this)); |
59 session->StartConnection(host_jid, authenticator.Pass()); | 56 session->StartConnection(host_jid, authenticator.Pass()); |
60 sessions_[session->session_id_] = session.get(); | 57 sessions_[session->session_id_] = session.get(); |
61 return session.Pass(); | 58 return session.Pass(); |
62 } | 59 } |
63 | 60 |
64 void JingleSessionManager::Close() { | 61 void JingleSessionManager::Close() { |
65 DCHECK(CalledOnValidThread()); | 62 DCHECK(CalledOnValidThread()); |
66 | 63 |
67 // Close() can be called only after all sessions are destroyed. | 64 // Close() can be called only after all sessions are destroyed. |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
100 SendReply(stanza, JingleMessageReply::BAD_REQUEST); | 97 SendReply(stanza, JingleMessageReply::BAD_REQUEST); |
101 return true; | 98 return true; |
102 } | 99 } |
103 | 100 |
104 if (message.action == JingleMessage::SESSION_INITIATE) { | 101 if (message.action == JingleMessage::SESSION_INITIATE) { |
105 // Description must be present in session-initiate messages. | 102 // Description must be present in session-initiate messages. |
106 DCHECK(message.description.get()); | 103 DCHECK(message.description.get()); |
107 | 104 |
108 SendReply(stanza, JingleMessageReply::NONE); | 105 SendReply(stanza, JingleMessageReply::NONE); |
109 | 106 |
110 // Notify |transport_factory_| that it may be used soon. | |
111 transport_factory_->PrepareTokens(); | |
112 | |
113 scoped_ptr<Authenticator> authenticator = | 107 scoped_ptr<Authenticator> authenticator = |
114 authenticator_factory_->CreateAuthenticator( | 108 authenticator_factory_->CreateAuthenticator( |
115 signal_strategy_->GetLocalJid(), message.from, | 109 signal_strategy_->GetLocalJid(), message.from, |
116 message.description->authenticator_message()); | 110 message.description->authenticator_message()); |
117 | 111 |
118 JingleSession* session = new JingleSession(this); | 112 JingleSession* session = new JingleSession(this); |
119 session->InitializeIncomingConnection(message, authenticator.Pass()); | 113 session->InitializeIncomingConnection(message, authenticator.Pass()); |
120 sessions_[session->session_id_] = session; | 114 sessions_[session->session_id_] = session; |
121 | 115 |
122 // Destroy the session if it was rejected due to incompatible protocol. | 116 // Destroy the session if it was rejected due to incompatible protocol. |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
171 signal_strategy_->SendStanza( | 165 signal_strategy_->SendStanza( |
172 JingleMessageReply(error).ToXml(original_stanza)); | 166 JingleMessageReply(error).ToXml(original_stanza)); |
173 } | 167 } |
174 | 168 |
175 void JingleSessionManager::SessionDestroyed(JingleSession* session) { | 169 void JingleSessionManager::SessionDestroyed(JingleSession* session) { |
176 sessions_.erase(session->session_id_); | 170 sessions_.erase(session->session_id_); |
177 } | 171 } |
178 | 172 |
179 } // namespace protocol | 173 } // namespace protocol |
180 } // namespace remoting | 174 } // namespace remoting |
OLD | NEW |