OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 // | 4 // |
5 // This file implements a standalone host process for Me2Me. | 5 // This file implements a standalone host process for Me2Me. |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/at_exit.h" | 9 #include "base/at_exit.h" |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
202 #if defined(OS_POSIX) | 202 #if defined(OS_POSIX) |
203 // Callback passed to RegisterSignalHandler() to handle SIGTERM events. | 203 // Callback passed to RegisterSignalHandler() to handle SIGTERM events. |
204 void SigTermHandler(int signal_number); | 204 void SigTermHandler(int signal_number); |
205 #endif | 205 #endif |
206 | 206 |
207 // Called to initialize resources on the UI thread. | 207 // Called to initialize resources on the UI thread. |
208 void StartOnUiThread(); | 208 void StartOnUiThread(); |
209 | 209 |
210 // Initializes IPC control channel and config file path from |cmd_line|. | 210 // Initializes IPC control channel and config file path from |cmd_line|. |
211 // Called on the UI thread. | 211 // Called on the UI thread. |
212 bool InitWithCommandLine(const CommandLine* cmd_line); | 212 bool InitWithCommandLine(const base::CommandLine* cmd_line); |
213 | 213 |
214 // Called on the UI thread to start monitoring the configuration file. | 214 // Called on the UI thread to start monitoring the configuration file. |
215 void StartWatchingConfigChanges(); | 215 void StartWatchingConfigChanges(); |
216 | 216 |
217 // Called on the network thread to set the host's Authenticator factory. | 217 // Called on the network thread to set the host's Authenticator factory. |
218 void CreateAuthenticatorFactory(); | 218 void CreateAuthenticatorFactory(); |
219 | 219 |
220 // Tear down resources that run on the UI thread. | 220 // Tear down resources that run on the UI thread. |
221 void ShutdownOnUiThread(); | 221 void ShutdownOnUiThread(); |
222 | 222 |
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
354 // We might be getting deleted on one of the threads the |host_context| owns, | 354 // We might be getting deleted on one of the threads the |host_context| owns, |
355 // so we need to post it back to the caller thread to safely join & delete the | 355 // so we need to post it back to the caller thread to safely join & delete the |
356 // threads it contains. This will go away when we move to AutoThread. | 356 // threads it contains. This will go away when we move to AutoThread. |
357 // |context_release()| will null |context_| before the method is invoked, so | 357 // |context_release()| will null |context_| before the method is invoked, so |
358 // we need to pull out the task-runner on which to call DeleteSoon first. | 358 // we need to pull out the task-runner on which to call DeleteSoon first. |
359 scoped_refptr<base::SingleThreadTaskRunner> task_runner = | 359 scoped_refptr<base::SingleThreadTaskRunner> task_runner = |
360 context_->ui_task_runner(); | 360 context_->ui_task_runner(); |
361 task_runner->DeleteSoon(FROM_HERE, context_.release()); | 361 task_runner->DeleteSoon(FROM_HERE, context_.release()); |
362 } | 362 } |
363 | 363 |
364 bool HostProcess::InitWithCommandLine(const CommandLine* cmd_line) { | 364 bool HostProcess::InitWithCommandLine(const base::CommandLine* cmd_line) { |
365 #if defined(REMOTING_MULTI_PROCESS) | 365 #if defined(REMOTING_MULTI_PROCESS) |
366 // Parse the handle value and convert it to a handle/file descriptor. | 366 // Parse the handle value and convert it to a handle/file descriptor. |
367 std::string channel_name = | 367 std::string channel_name = |
368 cmd_line->GetSwitchValueASCII(kDaemonPipeSwitchName); | 368 cmd_line->GetSwitchValueASCII(kDaemonPipeSwitchName); |
369 | 369 |
370 int pipe_handle = 0; | 370 int pipe_handle = 0; |
371 if (channel_name.empty() || | 371 if (channel_name.empty() || |
372 !base::StringToInt(channel_name, &pipe_handle)) { | 372 !base::StringToInt(channel_name, &pipe_handle)) { |
373 LOG(ERROR) << "Invalid '" << kDaemonPipeSwitchName | 373 LOG(ERROR) << "Invalid '" << kDaemonPipeSwitchName |
374 << "' value: " << channel_name; | 374 << "' value: " << channel_name; |
(...skipping 249 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
624 | 624 |
625 // Shutdown the host if the daemon process disconnects the IPC channel. | 625 // Shutdown the host if the daemon process disconnects the IPC channel. |
626 context_->network_task_runner()->PostTask( | 626 context_->network_task_runner()->PostTask( |
627 FROM_HERE, | 627 FROM_HERE, |
628 base::Bind(&HostProcess::ShutdownHost, this, kSuccessExitCode)); | 628 base::Bind(&HostProcess::ShutdownHost, this, kSuccessExitCode)); |
629 } | 629 } |
630 | 630 |
631 void HostProcess::StartOnUiThread() { | 631 void HostProcess::StartOnUiThread() { |
632 DCHECK(context_->ui_task_runner()->BelongsToCurrentThread()); | 632 DCHECK(context_->ui_task_runner()->BelongsToCurrentThread()); |
633 | 633 |
634 if (!InitWithCommandLine(CommandLine::ForCurrentProcess())) { | 634 if (!InitWithCommandLine(base::CommandLine::ForCurrentProcess())) { |
635 // Shutdown the host if the command line is invalid. | 635 // Shutdown the host if the command line is invalid. |
636 context_->network_task_runner()->PostTask( | 636 context_->network_task_runner()->PostTask( |
637 FROM_HERE, base::Bind(&HostProcess::ShutdownHost, this, | 637 FROM_HERE, base::Bind(&HostProcess::ShutdownHost, this, |
638 kUsageExitCode)); | 638 kUsageExitCode)); |
639 return; | 639 return; |
640 } | 640 } |
641 | 641 |
642 #if defined(OS_LINUX) | 642 #if defined(OS_LINUX) |
643 // If an audio pipe is specific on the command-line then initialize | 643 // If an audio pipe is specific on the command-line then initialize |
644 // AudioCapturerLinux to capture from it. | 644 // AudioCapturerLinux to capture from it. |
645 base::FilePath audio_pipe_name = CommandLine::ForCurrentProcess()-> | 645 base::FilePath audio_pipe_name = base::CommandLine::ForCurrentProcess()-> |
646 GetSwitchValuePath(kAudioPipeSwitchName); | 646 GetSwitchValuePath(kAudioPipeSwitchName); |
647 if (!audio_pipe_name.empty()) { | 647 if (!audio_pipe_name.empty()) { |
648 remoting::AudioCapturerLinux::InitializePipeReader( | 648 remoting::AudioCapturerLinux::InitializePipeReader( |
649 context_->audio_task_runner(), audio_pipe_name); | 649 context_->audio_task_runner(), audio_pipe_name); |
650 } | 650 } |
651 | 651 |
652 base::FilePath gnubby_socket_name = CommandLine::ForCurrentProcess()-> | 652 base::FilePath gnubby_socket_name = base::CommandLine::ForCurrentProcess()-> |
653 GetSwitchValuePath(kAuthSocknameSwitchName); | 653 GetSwitchValuePath(kAuthSocknameSwitchName); |
654 if (!gnubby_socket_name.empty()) | 654 if (!gnubby_socket_name.empty()) |
655 remoting::GnubbyAuthHandler::SetGnubbySocketName(gnubby_socket_name); | 655 remoting::GnubbyAuthHandler::SetGnubbySocketName(gnubby_socket_name); |
656 #endif // defined(OS_LINUX) | 656 #endif // defined(OS_LINUX) |
657 | 657 |
658 // Create a desktop environment factory appropriate to the build type & | 658 // Create a desktop environment factory appropriate to the build type & |
659 // platform. | 659 // platform. |
660 #if defined(OS_WIN) | 660 #if defined(OS_WIN) |
661 IpcDesktopEnvironmentFactory* desktop_environment_factory = | 661 IpcDesktopEnvironmentFactory* desktop_environment_factory = |
662 new IpcDesktopEnvironmentFactory( | 662 new IpcDesktopEnvironmentFactory( |
(...skipping 691 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1354 return exit_code; | 1354 return exit_code; |
1355 } | 1355 } |
1356 | 1356 |
1357 } // namespace remoting | 1357 } // namespace remoting |
1358 | 1358 |
1359 #if !defined(OS_WIN) | 1359 #if !defined(OS_WIN) |
1360 int main(int argc, char** argv) { | 1360 int main(int argc, char** argv) { |
1361 return remoting::HostMain(argc, argv); | 1361 return remoting::HostMain(argc, argv); |
1362 } | 1362 } |
1363 #endif // !defined(OS_WIN) | 1363 #endif // !defined(OS_WIN) |
OLD | NEW |