Index: remoting/signaling/delegating_signal_strategy.h |
diff --git a/remoting/client/plugin/delegating_signal_strategy.h b/remoting/signaling/delegating_signal_strategy.h |
similarity index 60% |
rename from remoting/client/plugin/delegating_signal_strategy.h |
rename to remoting/signaling/delegating_signal_strategy.h |
index 9a9096f44a5d1cb49fbeb7891a2fccb8269d5339..1c1f2bfe9b2a854e3c052e1130f9d238a301988e 100644 |
--- a/remoting/client/plugin/delegating_signal_strategy.h |
+++ b/remoting/signaling/delegating_signal_strategy.h |
@@ -7,7 +7,7 @@ |
#include "base/callback.h" |
#include "base/macros.h" |
-#include "base/observer_list.h" |
+#include "base/observer_list_threadsafe.h" |
#include "remoting/signaling/signal_strategy.h" |
namespace base { |
@@ -16,12 +16,24 @@ class SingleThreadTaskRunner; |
namespace remoting { |
+// A signaling strategy class that delegates IQ sending and receiving. |
+// |
+// Notes on thread safety: |
+// 1. This object can be created on any thread. |
+// 2. |OnIncomingMessage| and |send_iq_callback| will always be called in |
Sergey Ulanov
2016/10/05 21:49:07
s/|OnIncomingMessage|/OnIncomingMessage()/
Sergey Ulanov
2016/10/05 21:49:07
Also please note that |send_iq_callback| may be ca
kelvinp
2016/10/06 00:43:05
Done.
kelvinp
2016/10/06 00:43:05
Done.
|
+// |delegate_task_runner|. |
+// 3. The caller should invoke all methods on the |client_task_runner|. |
+// 4. All listeners will be called on |client_task_runner| as well. |
+// 5. The destructor should always be called on the |client_task_runner|. |
class DelegatingSignalStrategy : public SignalStrategy { |
public: |
typedef base::Callback<void(const std::string&)> SendIqCallback; |
- DelegatingSignalStrategy(std::string local_jid, |
- const SendIqCallback& send_iq_callback); |
+ DelegatingSignalStrategy( |
+ std::string local_jid, |
+ scoped_refptr<base::SingleThreadTaskRunner> delegate_task_runner, |
Sergey Ulanov
2016/10/05 21:49:07
This class is always created on delegate_task_runn
kelvinp
2016/10/06 00:43:06
Done.
|
+ scoped_refptr<base::SingleThreadTaskRunner> client_task_runner, |
+ const SendIqCallback& send_iq_callback); |
~DelegatingSignalStrategy() override; |
void OnIncomingMessage(const std::string& message); |
@@ -39,8 +51,10 @@ class DelegatingSignalStrategy : public SignalStrategy { |
private: |
std::string local_jid_; |
- SendIqCallback send_iq_callback_; |
+ scoped_refptr<base::SingleThreadTaskRunner> delegate_task_runner_; |
+ scoped_refptr<base::SingleThreadTaskRunner> client_task_runner_; |
+ SendIqCallback send_iq_callback_; |
base::ObserverList<Listener> listeners_; |
DISALLOW_COPY_AND_ASSIGN(DelegatingSignalStrategy); |