Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(243)

Unified Diff: remoting/host/remoting_me2me_host.cc

Issue 18075003: Host offline status reporting. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: remoting/host/remoting_me2me_host.cc
diff --git a/remoting/host/remoting_me2me_host.cc b/remoting/host/remoting_me2me_host.cc
index d684a8617283cf9c6651e3d91ced4e2c27199d0c..505fdb1ad70cbff46c985b7c465f5269ef15befe 100644
--- a/remoting/host/remoting_me2me_host.cc
+++ b/remoting/host/remoting_me2me_host.cc
@@ -22,6 +22,7 @@
#include "base/strings/utf_string_conversions.h"
#include "base/synchronization/waitable_event.h"
#include "base/threading/thread.h"
+#include "base/timer.h"
#include "build/build_config.h"
#include "crypto/nss_util.h"
#include "ipc/ipc_channel.h"
@@ -57,6 +58,7 @@
#include "remoting/host/log_to_server.h"
#include "remoting/host/logging.h"
#include "remoting/host/me2me_desktop_environment.h"
+#include "remoting/host/offline_status_sender.h"
#include "remoting/host/pairing_registry_delegate.h"
#include "remoting/host/policy_hack/policy_watcher.h"
#include "remoting/host/service_urls.h"
@@ -223,6 +225,8 @@ class HostProcess
// Stops the host and shuts down the process with the specified |exit_code|.
void ShutdownHost(int exit_code);
+ void ScheduleHostShutdown();
+
void ShutdownOnNetworkThread();
// Crashes the process in response to a daemon's request. The daemon passes
@@ -272,6 +276,7 @@ class HostProcess
scoped_ptr<XmppSignalStrategy> signal_strategy_;
scoped_ptr<SignalingConnector> signaling_connector_;
scoped_ptr<HeartbeatSender> heartbeat_sender_;
+ scoped_ptr<OfflineStatusSender> offline_status_sender_;
scoped_ptr<HostChangeNotificationListener> host_change_notification_listener_;
scoped_ptr<LogToServer> log_to_server_;
scoped_ptr<HostEventLogger> host_event_logger_;
@@ -287,6 +292,8 @@ class HostProcess
int* exit_code_out_;
bool signal_parent_;
+
+ base::OneShotTimer<HostProcess> timer_;
};
HostProcess::HostProcess(scoped_ptr<ChromotingHostContext> context,
@@ -958,6 +965,9 @@ void HostProcess::StartHost() {
this, host_id_, signal_strategy_.get(), key_pair_,
directory_bot_jid_));
+ offline_status_sender_.reset(new OfflineStatusSender(
+ host_id_, signal_strategy_.get(), key_pair_, directory_bot_jid_));
+
host_change_notification_listener_.reset(new HostChangeNotificationListener(
this, host_id_, signal_strategy_.get(), directory_bot_jid_));
@@ -1001,7 +1011,8 @@ void HostProcess::ShutdownHost(int exit_code) {
case HOST_INITIALIZING:
case HOST_STARTED:
state_ = HOST_STOPPING;
- ShutdownOnNetworkThread();
+ offline_status_sender_->SendOfflineStatus(exit_code);
+ ScheduleHostShutdown();
break;
case HOST_STOPPING_TO_RESTART:
@@ -1015,6 +1026,17 @@ void HostProcess::ShutdownHost(int exit_code) {
}
}
+// TODO(weitaosu): shut down the host once we get an ACK.
+void HostProcess::ScheduleHostShutdown() {
+ // If the timer is running that means a shutdown is already in progress.
rmsousa 2013/07/02 02:09:24 Can this happen? This is only called on the HOST_I
weitao 2013/07/03 19:23:31 Done.
+ if (timer_.IsRunning())
+ return;
+
+ // Delay the shutdown by 2 second to allow SendOfflineStatus to complete.
rmsousa 2013/07/02 02:09:24 Nit: For the simple "perform this action later" sc
weitao 2013/07/03 19:23:31 Done.
+ timer_.Start(FROM_HERE, base::TimeDelta::FromSeconds(2),
+ this, &HostProcess::ShutdownOnNetworkThread);
+}
+
void HostProcess::ShutdownOnNetworkThread() {
DCHECK(context_->network_task_runner()->BelongsToCurrentThread());
@@ -1022,6 +1044,7 @@ void HostProcess::ShutdownOnNetworkThread() {
host_event_logger_.reset();
log_to_server_.reset();
heartbeat_sender_.reset();
+ offline_status_sender_.reset();
host_change_notification_listener_.reset();
signaling_connector_.reset();
signal_strategy_.reset();

Powered by Google App Engine
This is Rietveld 408576698