Home | History | Annotate | Download | only in plugin
      1 // Copyright 2013 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "remoting/client/plugin/pepper_signal_strategy.h"
      6 
      7 #include "base/strings/string_number_conversions.h"
      8 #include "third_party/libjingle/source/talk/xmllite/xmlelement.h"
      9 
     10 namespace remoting {
     11 
     12 PepperSignalStrategy::PepperSignalStrategy(
     13     std::string local_jid,
     14     const SendIqCallback& send_iq_callback)
     15     : local_jid_(local_jid),
     16       send_iq_callback_(send_iq_callback),
     17       last_id_(0) {
     18 }
     19 
     20 PepperSignalStrategy::~PepperSignalStrategy() {
     21 }
     22 
     23 void PepperSignalStrategy::OnIncomingMessage(const std::string& message) {
     24  scoped_ptr<buzz::XmlElement> stanza(buzz::XmlElement::ForStr(message));
     25   if (!stanza.get()) {
     26     LOG(WARNING) << "Malformed XMPP stanza received: " << message;
     27     return;
     28   }
     29 
     30   ObserverListBase<Listener>::Iterator it(listeners_);
     31   Listener* listener;
     32   while ((listener = it.GetNext()) != NULL) {
     33     if (listener->OnSignalStrategyIncomingStanza(stanza.get()))
     34       break;
     35   }
     36 }
     37 
     38 void PepperSignalStrategy::Connect() {
     39 }
     40 
     41 void PepperSignalStrategy::Disconnect() {
     42 }
     43 
     44 SignalStrategy::State PepperSignalStrategy::GetState() const {
     45   return CONNECTED;
     46 }
     47 
     48 SignalStrategy::Error PepperSignalStrategy::GetError() const {
     49   return OK;
     50 }
     51 
     52 std::string PepperSignalStrategy::GetLocalJid() const {
     53   return local_jid_;
     54 }
     55 
     56 void PepperSignalStrategy::AddListener(Listener* listener) {
     57   listeners_.AddObserver(listener);
     58 }
     59 
     60 void PepperSignalStrategy::RemoveListener(Listener* listener) {
     61   listeners_.RemoveObserver(listener);
     62 }
     63 
     64 bool PepperSignalStrategy::SendStanza(scoped_ptr<buzz::XmlElement> stanza) {
     65   send_iq_callback_.Run(stanza->Str());
     66   return true;
     67 }
     68 
     69 std::string PepperSignalStrategy::GetNextId() {
     70   ++last_id_;
     71   return base::IntToString(last_id_);
     72 }
     73 
     74 }  // namespace remoting
     75