Index: remoting/signaling/fake_signal_strategy.h |
diff --git a/remoting/signaling/fake_signal_strategy.h b/remoting/signaling/fake_signal_strategy.h |
index 2decda6ffd0970c6704586c21dac4cadb81e076e..05c5ba5152549e43be5b58e72b99d2665c341ebe 100644 |
--- a/remoting/signaling/fake_signal_strategy.h |
+++ b/remoting/signaling/fake_signal_strategy.h |
@@ -15,11 +15,17 @@ |
#include "remoting/signaling/iq_sender.h" |
#include "remoting/signaling/signal_strategy.h" |
+namespace base { |
+class SingleThreadTaskRunner; |
+} // namespace base |
+ |
namespace remoting { |
class FakeSignalStrategy : public SignalStrategy, |
public base::NonThreadSafe { |
public: |
+ // Calls ConenctTo() to connect |peer1| and |peer2|. Both |peer1| and |peer2| |
+ // must belong to the current thread. |
static void Connect(FakeSignalStrategy* peer1, FakeSignalStrategy* peer2); |
FakeSignalStrategy(const std::string& jid); |
@@ -29,6 +35,9 @@ class FakeSignalStrategy : public SignalStrategy, |
return received_messages_; |
} |
+ // Connects current FakeSignalStrategy to receive messages from |peer|. |
+ void ConnectTo(FakeSignalStrategy* peer); |
+ |
// SignalStrategy interface. |
virtual void Connect() OVERRIDE; |
virtual void Disconnect() OVERRIDE; |
@@ -41,13 +50,22 @@ class FakeSignalStrategy : public SignalStrategy, |
virtual std::string GetNextId() OVERRIDE; |
private: |
+ typedef base::Callback<void(scoped_ptr<buzz::XmlElement> message)> |
+ PeerCallback; |
+ |
+ static void DeliverMessageOnThread( |
+ scoped_refptr<base::SingleThreadTaskRunner> thread, |
+ base::WeakPtr<FakeSignalStrategy> target, |
+ scoped_ptr<buzz::XmlElement> stanza); |
+ |
// Called by the |peer_|. Takes ownership of |stanza|. |
void OnIncomingMessage(scoped_ptr<buzz::XmlElement> stanza); |
+ void SetPeerCallback(const PeerCallback& peer_callback); |
- void DeliverIncomingMessages(); |
+ scoped_refptr<base::SingleThreadTaskRunner> main_thread_; |
std::string jid_; |
- FakeSignalStrategy* peer_; |
+ PeerCallback peer_callback_; |
ObserverList<Listener, true> listeners_; |
int last_id_; |
@@ -55,9 +73,6 @@ class FakeSignalStrategy : public SignalStrategy, |
// All received messages, includes thouse still in |pending_messages_|. |
std::list<buzz::XmlElement*> received_messages_; |
- // Queue of messages that have yet to be delivered to observers. |
- std::queue<buzz::XmlElement*> pending_messages_; |
- |
base::WeakPtrFactory<FakeSignalStrategy> weak_factory_; |
DISALLOW_COPY_AND_ASSIGN(FakeSignalStrategy); |