| 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 |