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 #ifndef REMOTING_CLIENT_PLUGIN_DELEGATING_SIGNAL_STRATEGY_H_ 6 #define REMOTING_CLIENT_PLUGIN_DELEGATING_SIGNAL_STRATEGY_H_ 7 8 #include "base/callback.h" 9 #include "base/observer_list.h" 10 #include "remoting/jingle_glue/signal_strategy.h" 11 12 namespace base { 13 class SingleThreadTaskRunner; 14 } // namespace base 15 16 namespace remoting { 17 18 class DelegatingSignalStrategy : public SignalStrategy { 19 public: 20 typedef base::Callback<void(const std::string&)> SendIqCallback; 21 22 DelegatingSignalStrategy(std::string local_jid, 23 const SendIqCallback& send_iq_callback); 24 virtual ~DelegatingSignalStrategy(); 25 26 void OnIncomingMessage(const std::string& message); 27 28 // SignalStrategy interface. 29 virtual void Connect() OVERRIDE; 30 virtual void Disconnect() OVERRIDE; 31 virtual State GetState() const OVERRIDE; 32 virtual Error GetError() const OVERRIDE; 33 virtual std::string GetLocalJid() const OVERRIDE; 34 virtual void AddListener(Listener* listener) OVERRIDE; 35 virtual void RemoveListener(Listener* listener) OVERRIDE; 36 virtual bool SendStanza(scoped_ptr<buzz::XmlElement> stanza) OVERRIDE; 37 virtual std::string GetNextId() OVERRIDE; 38 39 private: 40 std::string local_jid_; 41 SendIqCallback send_iq_callback_; 42 43 ObserverList<Listener> listeners_; 44 45 int last_id_; 46 47 DISALLOW_COPY_AND_ASSIGN(DelegatingSignalStrategy); 48 }; 49 50 } // namespace remoting 51 52 #endif // REMOTING_CLIENT_PLUGIN_DELEGATING_SIGNAL_STRATEGY_H_ 53