main.cc revision 357deca5ddee619afb0d6fe24ab8bdeed6c3c43e
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, 27357deca5ddee619afb0d6fe24ab8bdeed6c3c43eChristopher Wiley const base::FilePath& state_path) 28357deca5ddee619afb0d6fe24ab8bdeed6c3c43eChristopher Wiley : DBusServiceDaemon(kServiceName, kRootServicePath), 29357deca5ddee619afb0d6fe24ab8bdeed6c3c43eChristopher Wiley config_path_{config_path}, 30357deca5ddee619afb0d6fe24ab8bdeed6c3c43eChristopher Wiley state_path_{state_path} {} 31ea6456d3db72097b2d5ad071202cfd01c05b288aChris Sosa 3279e6a281e95a1226c90ff90084415df13fd858dbAlex Vakulenko protected: 3379e6a281e95a1226c90ff90084415df13fd858dbAlex Vakulenko void RegisterDBusObjectsAsync(AsyncEventSequencer* sequencer) override { 3479e6a281e95a1226c90ff90084415df13fd858dbAlex Vakulenko manager_.reset(new buffet::Manager(object_manager_->AsWeakPtr())); 3579e6a281e95a1226c90ff90084415df13fd858dbAlex Vakulenko manager_->RegisterAsync( 36357deca5ddee619afb0d6fe24ab8bdeed6c3c43eChristopher Wiley config_path_, 37357deca5ddee619afb0d6fe24ab8bdeed6c3c43eChristopher Wiley state_path_, 3879e6a281e95a1226c90ff90084415df13fd858dbAlex Vakulenko sequencer->GetHandler("Manager.RegisterAsync() failed.", true)); 395bac949c8339cd271a11b5b3bc5e16f7e8a0f2fChris Sosa } 405bac949c8339cd271a11b5b3bc5e16f7e8a0f2fChris Sosa 4179e6a281e95a1226c90ff90084415df13fd858dbAlex Vakulenko private: 4279e6a281e95a1226c90ff90084415df13fd858dbAlex Vakulenko std::unique_ptr<buffet::Manager> manager_; 43357deca5ddee619afb0d6fe24ab8bdeed6c3c43eChristopher Wiley const base::FilePath config_path_; 44357deca5ddee619afb0d6fe24ab8bdeed6c3c43eChristopher Wiley const base::FilePath state_path_; 455bac949c8339cd271a11b5b3bc5e16f7e8a0f2fChris Sosa 4679e6a281e95a1226c90ff90084415df13fd858dbAlex Vakulenko DISALLOW_COPY_AND_ASSIGN(Daemon); 4779e6a281e95a1226c90ff90084415df13fd858dbAlex Vakulenko}; 4854028f99aaa6917511102fc0572549a966257a8aChristopher Wiley 4979e6a281e95a1226c90ff90084415df13fd858dbAlex Vakulenko} // namespace buffet 505bac949c8339cd271a11b5b3bc5e16f7e8a0f2fChris Sosa 51357deca5ddee619afb0d6fe24ab8bdeed6c3c43eChristopher Wileynamespace { 52357deca5ddee619afb0d6fe24ab8bdeed6c3c43eChristopher Wiley 53357deca5ddee619afb0d6fe24ab8bdeed6c3c43eChristopher Wileyconst char kDefaultConfigFilePath[] = "/etc/buffet/buffet.conf"; 54357deca5ddee619afb0d6fe24ab8bdeed6c3c43eChristopher Wileyconst char kDefaultStateFilePath[] = "/var/lib/buffet/device_reg_info"; 55357deca5ddee619afb0d6fe24ab8bdeed6c3c43eChristopher Wiley 56357deca5ddee619afb0d6fe24ab8bdeed6c3c43eChristopher Wiley} // namespace 57357deca5ddee619afb0d6fe24ab8bdeed6c3c43eChristopher Wiley 585bac949c8339cd271a11b5b3bc5e16f7e8a0f2fChris Sosaint main(int argc, char* argv[]) { 59357deca5ddee619afb0d6fe24ab8bdeed6c3c43eChristopher Wiley DEFINE_string(config_path, kDefaultConfigFilePath, 60357deca5ddee619afb0d6fe24ab8bdeed6c3c43eChristopher Wiley "Path to file containing config information."); 61357deca5ddee619afb0d6fe24ab8bdeed6c3c43eChristopher Wiley DEFINE_string(state_path, kDefaultStateFilePath, 62357deca5ddee619afb0d6fe24ab8bdeed6c3c43eChristopher Wiley "Path to file containing state information."); 63357deca5ddee619afb0d6fe24ab8bdeed6c3c43eChristopher Wiley if (FLAGS_config_path.empty()) 64357deca5ddee619afb0d6fe24ab8bdeed6c3c43eChristopher Wiley FLAGS_config_path = kDefaultConfigFilePath; 65357deca5ddee619afb0d6fe24ab8bdeed6c3c43eChristopher Wiley if (FLAGS_state_path.empty()) 66357deca5ddee619afb0d6fe24ab8bdeed6c3c43eChristopher Wiley FLAGS_state_path = kDefaultStateFilePath; 67357deca5ddee619afb0d6fe24ab8bdeed6c3c43eChristopher Wiley chromeos::FlagHelper::Init(argc, argv, "Privet protocol handler daemon"); 6879e6a281e95a1226c90ff90084415df13fd858dbAlex Vakulenko chromeos::InitLog(chromeos::kLogToSyslog | chromeos::kLogHeader); 69357deca5ddee619afb0d6fe24ab8bdeed6c3c43eChristopher Wiley buffet::Daemon daemon{base::FilePath{FLAGS_config_path}, 70357deca5ddee619afb0d6fe24ab8bdeed6c3c43eChristopher Wiley base::FilePath{FLAGS_state_path}}; 7179e6a281e95a1226c90ff90084415df13fd858dbAlex Vakulenko return daemon.Run(); 725bac949c8339cd271a11b5b3bc5e16f7e8a0f2fChris Sosa} 73