summaryrefslogtreecommitdiffstats
path: root/remoting/client/plugin/pepper_signal_strategy.cc
diff options
context:
space:
mode:
Diffstat (limited to 'remoting/client/plugin/pepper_signal_strategy.cc')
-rw-r--r--remoting/client/plugin/pepper_signal_strategy.cc74
1 files changed, 74 insertions, 0 deletions
diff --git a/remoting/client/plugin/pepper_signal_strategy.cc b/remoting/client/plugin/pepper_signal_strategy.cc
new file mode 100644
index 0000000..4cf0330
--- /dev/null
+++ b/remoting/client/plugin/pepper_signal_strategy.cc
@@ -0,0 +1,74 @@
+// Copyright 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "remoting/client/plugin/pepper_signal_strategy.h"
+
+#include "base/string_number_conversions.h"
+#include "third_party/libjingle/source/talk/xmllite/xmlelement.h"
+
+namespace remoting {
+
+PepperSignalStrategy::PepperSignalStrategy(
+ std::string local_jid,
+ const SendIqCallback& send_iq_callback)
+ : local_jid_(local_jid),
+ send_iq_callback_(send_iq_callback),
+ last_id_(0) {
+}
+
+PepperSignalStrategy::~PepperSignalStrategy() {
+}
+
+void PepperSignalStrategy::OnIncomingMessage(const std::string& message) {
+ scoped_ptr<buzz::XmlElement> stanza(buzz::XmlElement::ForStr(message));
+ if (!stanza.get()) {
+ LOG(WARNING) << "Malformed XMPP stanza received: " << message;
+ return;
+ }
+
+ ObserverListBase<Listener>::Iterator it(listeners_);
+ Listener* listener;
+ while ((listener = it.GetNext()) != NULL) {
+ if (listener->OnSignalStrategyIncomingStanza(stanza.get()))
+ break;
+ }
+}
+
+void PepperSignalStrategy::Connect() {
+}
+
+void PepperSignalStrategy::Disconnect() {
+}
+
+SignalStrategy::State PepperSignalStrategy::GetState() const {
+ return CONNECTED;
+}
+
+SignalStrategy::Error PepperSignalStrategy::GetError() const {
+ return OK;
+}
+
+std::string PepperSignalStrategy::GetLocalJid() const {
+ return local_jid_;
+}
+
+void PepperSignalStrategy::AddListener(Listener* listener) {
+ listeners_.AddObserver(listener);
+}
+
+void PepperSignalStrategy::RemoveListener(Listener* listener) {
+ listeners_.RemoveObserver(listener);
+}
+
+bool PepperSignalStrategy::SendStanza(scoped_ptr<buzz::XmlElement> stanza) {
+ send_iq_callback_.Run(stanza->Str());
+ return true;
+}
+
+std::string PepperSignalStrategy::GetNextId() {
+ ++last_id_;
+ return base::IntToString(last_id_);
+}
+
+} // namespace remoting