Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / remoting / client / plugin / delegating_signal_strategy.h
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/signaling/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_