summaryrefslogtreecommitdiffstats
path: root/chrome/service/remoting/chromoting_host_manager.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/service/remoting/chromoting_host_manager.cc')
-rw-r--r--chrome/service/remoting/chromoting_host_manager.cc216
1 files changed, 0 insertions, 216 deletions
diff --git a/chrome/service/remoting/chromoting_host_manager.cc b/chrome/service/remoting/chromoting_host_manager.cc
deleted file mode 100644
index 39fdd70..0000000
--- a/chrome/service/remoting/chromoting_host_manager.cc
+++ /dev/null
@@ -1,216 +0,0 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/service/remoting/chromoting_host_manager.h"
-
-#include "base/path_service.h"
-#include "chrome/common/chrome_paths.h"
-#include "chrome/common/guid.h"
-#include "chrome/common/remoting/chromoting_host_info.h"
-#include "net/base/net_util.h"
-#include "remoting/base/constants.h"
-#include "remoting/host/chromoting_host_context.h"
-#include "remoting/host/heartbeat_sender.h"
-#include "remoting/host/host_key_pair.h"
-#include "remoting/host/json_host_config.h"
-
-namespace remoting {
-
-ChromotingHostManager::ChromotingHostManager(Observer* observer)
- : observer_(observer),
- main_message_loop_(NULL) {
-}
-
-void ChromotingHostManager::Initialize(
- MessageLoopForUI* main_message_loop,
- base::MessageLoopProxy* file_message_loop) {
- FilePath user_data_dir;
- PathService::Get(chrome::DIR_USER_DATA, &user_data_dir);
- FilePath chromoting_config_path =
- user_data_dir.Append(FILE_PATH_LITERAL(".ChromotingConfig.json"));
- remoting::JsonHostConfig* config = new remoting::JsonHostConfig(
- chromoting_config_path, file_message_loop);
- if (!config->Read()) {
- VLOG(1) << "Failed to read chromoting config file.";
- }
-
- main_message_loop_ = main_message_loop;
- chromoting_config_ = config;
-
- if (!IsConfigInitialized()) {
- InitializeConfig();
- }
-
- if (IsEnabled()) {
- // TODO(wez): Need to callback the Observer so that ServiceProcess
- // knows to stay alive to service Chromoting requests.
- // This will go away once we have a more consistent model for the
- // service process internals.
- observer_->OnChromotingHostEnabled();
- Start();
- }
-}
-
-void ChromotingHostManager::Teardown(Task* done_task) {
- Stop(done_task);
-}
-
-ChromotingHostManager::~ChromotingHostManager() {
- DCHECK(!chromoting_host_);
- DCHECK(!chromoting_context_.get());
-}
-
-bool ChromotingHostManager::IsConfigInitialized() {
- std::string host_id;
- if (!chromoting_config_->GetString(remoting::kHostIdConfigPath, &host_id))
- return false;
-
- return guid::IsValidGUID(host_id);
-}
-
-void ChromotingHostManager::InitializeConfig() {
- VLOG(1) << "Initializing static chromoting host parameters.";
-
- // TODO(hclam): This is a time consuming operation so we should run it on
- // a separate thread.
- remoting::HostKeyPair host_key_pair;
- host_key_pair.Generate();
- std::string host_id(guid::GenerateGUID());
- std::string hostname(net::GetHostName());
-
- chromoting_config_->SetBoolean(remoting::kHostEnabledConfigPath, false);
- chromoting_config_->SetString(remoting::kHostIdConfigPath, host_id);
- chromoting_config_->SetString(remoting::kHostNameConfigPath, hostname);
- host_key_pair.Save(chromoting_config_);
-
- // Save updated values on the disk.
- chromoting_config_->Save();
-}
-
-void ChromotingHostManager::SetCredentials(const std::string& login,
- const std::string& token) {
- chromoting_config_->SetString(remoting::kXmppLoginConfigPath, login);
- chromoting_config_->SetString(remoting::kXmppAuthTokenConfigPath, token);
-
- // Save updated values on the disk.
- chromoting_config_->Save();
-}
-
-void ChromotingHostManager::Enable() {
- // We have already started.
- if (IsEnabled())
- return;
-
- SetEnabled(true);
- observer_->OnChromotingHostEnabled();
-
- Start();
-}
-
-void ChromotingHostManager::Disable() {
- if (!IsEnabled())
- return;
-
- SetEnabled(false);
-
- // TODO(hclam): Immediately reporting will cause threading problems
- // ServiceProcess thinks we can shutdown safely.
- observer_->OnChromotingHostDisabled();
-
- Stop(NULL);
-}
-
-void ChromotingHostManager::GetHostInfo(ChromotingHostInfo* host_info) {
- chromoting_config_->GetString(remoting::kHostIdConfigPath,
- &host_info->host_id);
- chromoting_config_->GetString(remoting::kHostNameConfigPath,
- &host_info->hostname);
- HostKeyPair key_pair;
- if (key_pair.Load(chromoting_config_)) {
- host_info->public_key = key_pair.GetPublicKey();
- }
-
- host_info->enabled = IsEnabled();
-
- chromoting_config_->GetString(remoting::kXmppLoginConfigPath,
- &host_info->login);
-}
-
-void ChromotingHostManager::Stop(Task* done_task) {
- // Stop the host if it is started.
- if (chromoting_host_) {
- // Save the shutdown task, it will be executed when chromoting host
- // is stopped.
- shutdown_task_.reset(done_task);
-
- // Shutdown the chromoting host asynchronously.
- chromoting_host_->Shutdown();
- } else if (done_task) {
- done_task->Run();
- delete done_task;
- }
-}
-
-bool ChromotingHostManager::IsEnabled() {
- bool enabled;
- if (!chromoting_config_->GetBoolean(remoting::kHostEnabledConfigPath,
- &enabled)) {
- enabled = false;
- }
- return enabled;
-}
-
-void ChromotingHostManager::SetEnabled(bool enabled) {
- chromoting_config_->SetBoolean(remoting::kHostEnabledConfigPath,
- enabled);
- chromoting_config_->Save();
-}
-
-void ChromotingHostManager::Start() {
- // Don't do anything if we already started.
- if (chromoting_host_.get())
- return;
-
- // Start the chromoting context first.
- chromoting_context_.reset(
- new remoting::ChromotingHostContext(main_message_loop_));
- chromoting_context_->Start();
-
- // Create a chromoting host object.
- chromoting_host_ = remoting::ChromotingHost::Create(chromoting_context_.get(),
- chromoting_config_);
-
- // Initialize HeartbeatSender.
- scoped_refptr<remoting::HeartbeatSender> heartbeat_sender =
- new remoting::HeartbeatSender(chromoting_context_->network_message_loop(),
- chromoting_config_);
- if (!heartbeat_sender->Init())
- LOG(ERROR) << "Failed to initialize heartbeat sender.";
- chromoting_host_->AddStatusObserver(heartbeat_sender);
-
-
- // Then start the chromoting host.
- // When ChromotingHost is shutdown because of failure or a request that
- // we made OnChromotingShutdown() is calls.
- chromoting_host_->Start(
- NewRunnableMethod(this, &ChromotingHostManager::OnShutdown));
-}
-
-void ChromotingHostManager::OnShutdown() {
- if (MessageLoop::current() != main_message_loop_) {
- main_message_loop_->PostTask(FROM_HERE,
- NewRunnableMethod(this, &ChromotingHostManager::OnShutdown));
- return;
- }
- chromoting_context_->Stop();
- chromoting_context_.reset();
- chromoting_host_ = NULL;
-
- if (shutdown_task_.get()) {
- shutdown_task_->Run();
- shutdown_task_.reset();
- }
-}
-
-} // namespace remoting