|  | // Copyright 2014 The Chromium OS 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 <string> | 
|  |  | 
|  | #include <base/command_line.h> | 
|  | #include <chromeos/dbus/async_event_sequencer.h> | 
|  | #include <chromeos/dbus/exported_object_manager.h> | 
|  | #include <chromeos/daemons/dbus_daemon.h> | 
|  | #include <chromeos/syslog_logging.h> | 
|  |  | 
|  | #include "buffet/libbuffet/dbus_constants.h" | 
|  | #include "buffet/manager.h" | 
|  |  | 
|  | using chromeos::dbus_utils::AsyncEventSequencer; | 
|  | using chromeos::DBusServiceDaemon; | 
|  | using buffet::dbus_constants::kServiceName; | 
|  | using buffet::dbus_constants::kRootServicePath; | 
|  |  | 
|  | namespace buffet { | 
|  |  | 
|  | class Daemon : public DBusServiceDaemon { | 
|  | public: | 
|  | Daemon() : DBusServiceDaemon(kServiceName, kRootServicePath) {} | 
|  |  | 
|  | protected: | 
|  | void RegisterDBusObjectsAsync(AsyncEventSequencer* sequencer) override { | 
|  | manager_.reset(new buffet::Manager(object_manager_->AsWeakPtr())); | 
|  | manager_->RegisterAsync( | 
|  | sequencer->GetHandler("Manager.RegisterAsync() failed.", true)); | 
|  | } | 
|  |  | 
|  | private: | 
|  | std::unique_ptr<buffet::Manager> manager_; | 
|  |  | 
|  | DISALLOW_COPY_AND_ASSIGN(Daemon); | 
|  | }; | 
|  |  | 
|  | }  // namespace buffet | 
|  |  | 
|  | int main(int argc, char* argv[]) { | 
|  | CommandLine::Init(argc, argv); | 
|  | chromeos::InitLog(chromeos::kLogToSyslog | chromeos::kLogHeader); | 
|  | buffet::Daemon daemon; | 
|  | return daemon.Run(); | 
|  | } |