Index: remoting/host/register_support_host_request.h |
diff --git a/remoting/host/register_support_host_request.h b/remoting/host/register_support_host_request.h |
index 84dab325184d2543cde9b5ff1d3b1143f4fbd61c..955cd5a0c9a6e6a677ffac5387fbcfae24ba1f76 100644 |
--- a/remoting/host/register_support_host_request.h |
+++ b/remoting/host/register_support_host_request.h |
@@ -10,8 +10,8 @@ |
#include "base/callback.h" |
#include "base/memory/ref_counted.h" |
#include "base/memory/scoped_ptr.h" |
+#include "remoting/jingle_glue/signal_strategy.h" |
#include "remoting/host/host_key_pair.h" |
-#include "remoting/host/host_status_observer.h" |
#include "testing/gtest/include/gtest/gtest_prod.h" |
class MessageLoop; |
@@ -29,12 +29,11 @@ namespace remoting { |
class IqRequest; |
class IqSender; |
-// RegisterSupportHostRequest sends support host registeration request |
-// to the Chromoting Bot. It listens to the status of the host using |
-// HostStatusObserver interface and sends the request when signalling |
-// channel is connected. When a response is received from the bot, it |
-// calls the callback specified in the Init() method. |
-class RegisterSupportHostRequest : public HostStatusObserver { |
+// RegisterSupportHostRequest sends a request to register the host for |
+// a SupportID, as soon as the associated SignalStrategy becomes |
+// connected. When a response is received from the bot, it calls the |
+// callback specified in the Init() method. |
+class RegisterSupportHostRequest : public SignalStrategy::Listener { |
public: |
// First parameter is set to true on success. Second parameter is |
// the new SessionID received from the bot. Third parameter is the |
@@ -45,23 +44,22 @@ class RegisterSupportHostRequest : public HostStatusObserver { |
RegisterSupportHostRequest(); |
virtual ~RegisterSupportHostRequest(); |
- // Provide the configuration to use to register the host, and a |
- // callback to invoke when a registration response is received. |
- // |callback| is called when registration response is received from |
- // the server. Ownership of |callback| is given to the request |
- // object. Caller must ensure that the callback object is valid |
- // while signalling connection exists. Returns false on falure |
- // (e.g. config is invalid). Callback is never called if the bot |
- // malfunctions and doesn't respond to the request. |
- bool Init(HostConfig* config, const RegisterCallback& callback); |
+ // Initializes the registration to use the |signal_startegy| and to |
+ // notify |callback| upon completion or failure. Returns false on |
+ // falure (e.g. config is invalid). Callback is never called if the |
+ // bot malfunctions and doesn't respond to the request. |
+ // |
+ // TODO(sergeyu): This class should have timeout for the bot |
+ // response. |
+ bool Init(SignalStrategy* signal_strategy, |
+ HostConfig* config, |
+ const RegisterCallback& callback); |
// HostStatusObserver implementation. |
- virtual void OnSignallingConnected(SignalStrategy* signal_strategy) OVERRIDE; |
- virtual void OnSignallingDisconnected() OVERRIDE; |
- virtual void OnClientAuthenticated(const std::string& jid) OVERRIDE; |
- virtual void OnClientDisconnected(const std::string& jid) OVERRIDE; |
- virtual void OnAccessDenied() OVERRIDE; |
- virtual void OnShutdown() OVERRIDE; |
+ virtual void OnSignalStrategyStateChange( |
+ SignalStrategy::State state) OVERRIDE; |
+ virtual bool OnSignalStrategyIncomingStanza( |
+ const buzz::XmlElement* stanza) OVERRIDE; |
private: |
void DoSend(); |
@@ -74,7 +72,10 @@ class RegisterSupportHostRequest : public HostStatusObserver { |
bool ParseResponse(const buzz::XmlElement* response, |
std::string* support_id, base::TimeDelta* lifetime); |
- MessageLoop* message_loop_; |
+ void CallCallback( |
+ bool success, const std::string& support_id, base::TimeDelta lifetime); |
+ |
+ SignalStrategy* signal_strategy_; |
RegisterCallback callback_; |
scoped_ptr<IqSender> iq_sender_; |
scoped_ptr<IqRequest> request_; |