main.cc revision 1d35ecce32826b7a8aeb4a040a8621ddc95f4eb9
15bac949c8339cd271a11b5b3bc5e16f7e8a0f2fChris Sosa// Copyright 2014 The Chromium OS Authors. All rights reserved. 25bac949c8339cd271a11b5b3bc5e16f7e8a0f2fChris Sosa// Use of this source code is governed by a BSD-style license that can be 35bac949c8339cd271a11b5b3bc5e16f7e8a0f2fChris Sosa// found in the LICENSE file. 45bac949c8339cd271a11b5b3bc5e16f7e8a0f2fChris Sosa 55bac949c8339cd271a11b5b3bc5e16f7e8a0f2fChris Sosa#include <string> 65bac949c8339cd271a11b5b3bc5e16f7e8a0f2fChris Sosa 7357deca5ddee619afb0d6fe24ab8bdeed6c3c43eChristopher Wiley#include <base/files/file_path.h> 824e5f5d44b25c1ad61e5f07f951467e3c2870871Alex Vakulenko#include <chromeos/dbus/async_event_sequencer.h> 924e5f5d44b25c1ad61e5f07f951467e3c2870871Alex Vakulenko#include <chromeos/dbus/exported_object_manager.h> 1079e6a281e95a1226c90ff90084415df13fd858dbAlex Vakulenko#include <chromeos/daemons/dbus_daemon.h> 11357deca5ddee619afb0d6fe24ab8bdeed6c3c43eChristopher Wiley#include <chromeos/flag_helper.h> 1279e6a281e95a1226c90ff90084415df13fd858dbAlex Vakulenko#include <chromeos/syslog_logging.h> 135bac949c8339cd271a11b5b3bc5e16f7e8a0f2fChris Sosa 149485896e8a842f523867cca2154607a9704586bfAlex Vakulenko#include "buffet/dbus_constants.h" 154b5f04c56a2f13b4ec178ce430ea57ddadf1225fChristopher Wiley#include "buffet/manager.h" 165bac949c8339cd271a11b5b3bc5e16f7e8a0f2fChris Sosa 1768c07ccd298fb44bd0965ccbe0479ea2bc1c129bChristopher Wileyusing chromeos::dbus_utils::AsyncEventSequencer; 1879e6a281e95a1226c90ff90084415df13fd858dbAlex Vakulenkousing chromeos::DBusServiceDaemon; 1979e6a281e95a1226c90ff90084415df13fd858dbAlex Vakulenkousing buffet::dbus_constants::kServiceName; 2079e6a281e95a1226c90ff90084415df13fd858dbAlex Vakulenkousing buffet::dbus_constants::kRootServicePath; 2154028f99aaa6917511102fc0572549a966257a8aChristopher Wiley 2279e6a281e95a1226c90ff90084415df13fd858dbAlex Vakulenkonamespace buffet { 235bac949c8339cd271a11b5b3bc5e16f7e8a0f2fChris Sosa 2479e6a281e95a1226c90ff90084415df13fd858dbAlex Vakulenkoclass Daemon : public DBusServiceDaemon { 2579e6a281e95a1226c90ff90084415df13fd858dbAlex Vakulenko public: 26357deca5ddee619afb0d6fe24ab8bdeed6c3c43eChristopher Wiley Daemon(const base::FilePath& config_path, 27c39f4a34ab6c1b47e1efcec698b18cfd6b9d1c72Christopher Wiley const base::FilePath& state_path, 281d35ecce32826b7a8aeb4a040a8621ddc95f4eb9Christopher Wiley const base::FilePath& test_definitions_path, 291d35ecce32826b7a8aeb4a040a8621ddc95f4eb9Christopher Wiley bool enable_xmpp) 30357deca5ddee619afb0d6fe24ab8bdeed6c3c43eChristopher Wiley : DBusServiceDaemon(kServiceName, kRootServicePath), 31357deca5ddee619afb0d6fe24ab8bdeed6c3c43eChristopher Wiley config_path_{config_path}, 32c39f4a34ab6c1b47e1efcec698b18cfd6b9d1c72Christopher Wiley state_path_{state_path}, 331d35ecce32826b7a8aeb4a040a8621ddc95f4eb9Christopher Wiley test_definitions_path_{test_definitions_path}, 341d35ecce32826b7a8aeb4a040a8621ddc95f4eb9Christopher Wiley enable_xmpp_{enable_xmpp} {} 35ea6456d3db72097b2d5ad071202cfd01c05b288aChris Sosa 3679e6a281e95a1226c90ff90084415df13fd858dbAlex Vakulenko protected: 3779e6a281e95a1226c90ff90084415df13fd858dbAlex Vakulenko void RegisterDBusObjectsAsync(AsyncEventSequencer* sequencer) override { 3879e6a281e95a1226c90ff90084415df13fd858dbAlex Vakulenko manager_.reset(new buffet::Manager(object_manager_->AsWeakPtr())); 3979e6a281e95a1226c90ff90084415df13fd858dbAlex Vakulenko manager_->RegisterAsync( 40357deca5ddee619afb0d6fe24ab8bdeed6c3c43eChristopher Wiley config_path_, 41357deca5ddee619afb0d6fe24ab8bdeed6c3c43eChristopher Wiley state_path_, 42c39f4a34ab6c1b47e1efcec698b18cfd6b9d1c72Christopher Wiley test_definitions_path_, 431d35ecce32826b7a8aeb4a040a8621ddc95f4eb9Christopher Wiley enable_xmpp_, 4479e6a281e95a1226c90ff90084415df13fd858dbAlex Vakulenko sequencer->GetHandler("Manager.RegisterAsync() failed.", true)); 455bac949c8339cd271a11b5b3bc5e16f7e8a0f2fChris Sosa } 465bac949c8339cd271a11b5b3bc5e16f7e8a0f2fChris Sosa 4779e6a281e95a1226c90ff90084415df13fd858dbAlex Vakulenko private: 48b024ca97e47b61da95c0b4cefa616329ff9ae2daChristopher Wiley BuffetConfig config_; 4979e6a281e95a1226c90ff90084415df13fd858dbAlex Vakulenko std::unique_ptr<buffet::Manager> manager_; 50357deca5ddee619afb0d6fe24ab8bdeed6c3c43eChristopher Wiley const base::FilePath config_path_; 51357deca5ddee619afb0d6fe24ab8bdeed6c3c43eChristopher Wiley const base::FilePath state_path_; 52c39f4a34ab6c1b47e1efcec698b18cfd6b9d1c72Christopher Wiley const base::FilePath test_definitions_path_; 531d35ecce32826b7a8aeb4a040a8621ddc95f4eb9Christopher Wiley const bool enable_xmpp_; 545bac949c8339cd271a11b5b3bc5e16f7e8a0f2fChris Sosa 5579e6a281e95a1226c90ff90084415df13fd858dbAlex Vakulenko DISALLOW_COPY_AND_ASSIGN(Daemon); 5679e6a281e95a1226c90ff90084415df13fd858dbAlex Vakulenko}; 5754028f99aaa6917511102fc0572549a966257a8aChristopher Wiley 5879e6a281e95a1226c90ff90084415df13fd858dbAlex Vakulenko} // namespace buffet 595bac949c8339cd271a11b5b3bc5e16f7e8a0f2fChris Sosa 60357deca5ddee619afb0d6fe24ab8bdeed6c3c43eChristopher Wileynamespace { 61357deca5ddee619afb0d6fe24ab8bdeed6c3c43eChristopher Wiley 62357deca5ddee619afb0d6fe24ab8bdeed6c3c43eChristopher Wileyconst char kDefaultConfigFilePath[] = "/etc/buffet/buffet.conf"; 63357deca5ddee619afb0d6fe24ab8bdeed6c3c43eChristopher Wileyconst char kDefaultStateFilePath[] = "/var/lib/buffet/device_reg_info"; 64357deca5ddee619afb0d6fe24ab8bdeed6c3c43eChristopher Wiley 65357deca5ddee619afb0d6fe24ab8bdeed6c3c43eChristopher Wiley} // namespace 66357deca5ddee619afb0d6fe24ab8bdeed6c3c43eChristopher Wiley 675bac949c8339cd271a11b5b3bc5e16f7e8a0f2fChris Sosaint main(int argc, char* argv[]) { 68b12e995d8771e4970ff349cd9759b16e1d386696Vitaly Buka DEFINE_bool(log_to_stderr, false, "log trace messages to stderr as well"); 69357deca5ddee619afb0d6fe24ab8bdeed6c3c43eChristopher Wiley DEFINE_string(config_path, kDefaultConfigFilePath, 70357deca5ddee619afb0d6fe24ab8bdeed6c3c43eChristopher Wiley "Path to file containing config information."); 71357deca5ddee619afb0d6fe24ab8bdeed6c3c43eChristopher Wiley DEFINE_string(state_path, kDefaultStateFilePath, 72357deca5ddee619afb0d6fe24ab8bdeed6c3c43eChristopher Wiley "Path to file containing state information."); 73c39f4a34ab6c1b47e1efcec698b18cfd6b9d1c72Christopher Wiley DEFINE_string(test_definitions_path, "", 74c39f4a34ab6c1b47e1efcec698b18cfd6b9d1c72Christopher Wiley "Path to directory containing additional command " 75c39f4a34ab6c1b47e1efcec698b18cfd6b9d1c72Christopher Wiley "and state definitions. For use in test only."); 761d35ecce32826b7a8aeb4a040a8621ddc95f4eb9Christopher Wiley DEFINE_bool(enable_xmpp, true, 771d35ecce32826b7a8aeb4a040a8621ddc95f4eb9Christopher Wiley "Connect to GCD via a persistent XMPP connection."); 784a4be07dd0e87377be7726f033456ef483c61718Aaron Kemp chromeos::FlagHelper::Init(argc, argv, "Privet protocol handler daemon"); 79357deca5ddee619afb0d6fe24ab8bdeed6c3c43eChristopher Wiley if (FLAGS_config_path.empty()) 80357deca5ddee619afb0d6fe24ab8bdeed6c3c43eChristopher Wiley FLAGS_config_path = kDefaultConfigFilePath; 81357deca5ddee619afb0d6fe24ab8bdeed6c3c43eChristopher Wiley if (FLAGS_state_path.empty()) 82357deca5ddee619afb0d6fe24ab8bdeed6c3c43eChristopher Wiley FLAGS_state_path = kDefaultStateFilePath; 83b12e995d8771e4970ff349cd9759b16e1d386696Vitaly Buka int flags = chromeos::kLogToSyslog | chromeos::kLogHeader; 84b12e995d8771e4970ff349cd9759b16e1d386696Vitaly Buka if (FLAGS_log_to_stderr) 85b12e995d8771e4970ff349cd9759b16e1d386696Vitaly Buka flags |= chromeos::kLogToStderr; 86b12e995d8771e4970ff349cd9759b16e1d386696Vitaly Buka chromeos::InitLog(flags); 87b12e995d8771e4970ff349cd9759b16e1d386696Vitaly Buka 88357deca5ddee619afb0d6fe24ab8bdeed6c3c43eChristopher Wiley buffet::Daemon daemon{base::FilePath{FLAGS_config_path}, 89c39f4a34ab6c1b47e1efcec698b18cfd6b9d1c72Christopher Wiley base::FilePath{FLAGS_state_path}, 901d35ecce32826b7a8aeb4a040a8621ddc95f4eb9Christopher Wiley base::FilePath{FLAGS_test_definitions_path}, 911d35ecce32826b7a8aeb4a040a8621ddc95f4eb9Christopher Wiley FLAGS_enable_xmpp}; 9279e6a281e95a1226c90ff90084415df13fd858dbAlex Vakulenko return daemon.Run(); 935bac949c8339cd271a11b5b3bc5e16f7e8a0f2fChris Sosa} 94