OLD | NEW |
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/jingle_glue/jingle_signaling_connector.h" | 5 #include "remoting/jingle_glue/jingle_signaling_connector.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "base/stl_util.h" | 8 #include "base/stl_util.h" |
9 #include "remoting/jingle_glue/iq_request.h" | |
10 #include "third_party/libjingle/source/talk/p2p/base/sessionmanager.h" | 9 #include "third_party/libjingle/source/talk/p2p/base/sessionmanager.h" |
11 #include "third_party/libjingle/source/talk/xmpp/constants.h" | 10 #include "third_party/libjingle/source/talk/xmpp/constants.h" |
12 #include "third_party/libjingle/source/talk/xmpp/xmppclient.h" | 11 #include "third_party/libjingle/source/talk/xmpp/xmppclient.h" |
13 | 12 |
14 namespace remoting { | 13 namespace remoting { |
15 | 14 |
16 namespace { | 15 namespace { |
17 | 16 |
18 // GTalk sometimes generates service-unavailable error messages with | 17 // GTalk sometimes generates service-unavailable error messages with |
19 // incorrect namespace. This method fixes such messages. | 18 // incorrect namespace. This method fixes such messages. |
20 // TODO(sergeyu): Fix this on the server side. | 19 // TODO(sergeyu): Fix this on the server side. |
21 void FixErrorStanza(buzz::XmlElement* stanza) { | 20 void FixErrorStanza(buzz::XmlElement* stanza) { |
22 if (!stanza->FirstNamed(buzz::QN_ERROR)) { | 21 if (!stanza->FirstNamed(buzz::QN_ERROR)) { |
23 buzz::XmlElement* error = stanza->FirstNamed(buzz::QName("", "error")); | 22 buzz::XmlElement* error = stanza->FirstNamed(buzz::QName("", "error")); |
24 error->SetName(buzz::QN_ERROR); | 23 error->SetName(buzz::QN_ERROR); |
25 } | 24 } |
26 } | 25 } |
27 | 26 |
28 } // namespace | 27 } // namespace |
29 | 28 |
30 JingleSignalingConnector::JingleSignalingConnector( | 29 JingleSignalingConnector::JingleSignalingConnector( |
31 SignalStrategy* signal_strategy, | 30 SignalStrategy* signal_strategy, |
32 cricket::SessionManager* session_manager) | 31 cricket::SessionManager* session_manager) |
33 : signal_strategy_(signal_strategy), | 32 : signal_strategy_(signal_strategy), |
34 session_manager_(session_manager) { | 33 session_manager_(session_manager) { |
35 | 34 |
36 session_manager_->SignalOutgoingMessage.connect( | 35 session_manager_->SignalOutgoingMessage.connect( |
37 this, &JingleSignalingConnector::OnOutgoingMessage); | 36 this, &JingleSignalingConnector::OnOutgoingMessage); |
38 | 37 |
39 signal_strategy_->SetListener(this); | 38 signal_strategy_->AddListener(this); |
40 | 39 |
41 // Assume that signaling is ready from the beginning. | 40 // Assume that signaling is ready from the beginning. |
42 session_manager_->SignalRequestSignaling.connect( | 41 session_manager_->SignalRequestSignaling.connect( |
43 session_manager_, &cricket::SessionManager::OnSignalingReady); | 42 session_manager_, &cricket::SessionManager::OnSignalingReady); |
44 } | 43 } |
45 | 44 |
46 JingleSignalingConnector::~JingleSignalingConnector() { | 45 JingleSignalingConnector::~JingleSignalingConnector() { |
47 signal_strategy_->SetListener(NULL); | 46 signal_strategy_->RemoveListener(this); |
48 STLDeleteContainerPairSecondPointers(pending_requests_.begin(), | 47 STLDeleteContainerPairSecondPointers(pending_requests_.begin(), |
49 pending_requests_.end()); | 48 pending_requests_.end()); |
50 } | 49 } |
51 | 50 |
52 bool JingleSignalingConnector::OnIncomingStanza( | 51 bool JingleSignalingConnector::OnIncomingStanza( |
53 const buzz::XmlElement* stanza) { | 52 const buzz::XmlElement* stanza) { |
54 if (session_manager_->IsSessionMessage(stanza)) { | 53 if (session_manager_->IsSessionMessage(stanza)) { |
55 session_manager_->OnIncomingMessage(stanza); | 54 session_manager_->OnIncomingMessage(stanza); |
56 return true; | 55 return true; |
57 } | 56 } |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
99 | 98 |
100 // Save the outgoing request for OnIncomingResponse(). | 99 // Save the outgoing request for OnIncomingResponse(). |
101 pending_requests_[id] = new buzz::XmlElement(*stanza); | 100 pending_requests_[id] = new buzz::XmlElement(*stanza); |
102 } | 101 } |
103 } | 102 } |
104 | 103 |
105 signal_strategy_->SendStanza(stanza_copy.release()); | 104 signal_strategy_->SendStanza(stanza_copy.release()); |
106 } | 105 } |
107 | 106 |
108 } // namespace remoting | 107 } // namespace remoting |
OLD | NEW |