blob: c0adf7229acad48aad773004779ac9bd24840fec [file] [log] [blame]
Peter Qiu5dd242d2014-10-14 12:23:21 -07001// Copyright 2014 The Chromium OS Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "apmanager/daemon.h"
6
7#include <sysexits.h>
8
9#include <base/bind.h>
10#include <base/logging.h>
11#include <base/message_loop/message_loop_proxy.h>
12#include <base/run_loop.h>
13#include <chromeos/dbus/service_constants.h>
14
15namespace apmanager {
16
17// static
18const char Daemon::kAPManagerGroupName[] = "apmanager";
19const char Daemon::kAPManagerUserName[] = "apmanager";
20
21Daemon::Daemon(const base::Closure& startup_callback)
22 : DBusServiceDaemon(kServiceName, "/"),
23 startup_callback_(startup_callback) {}
24
25int Daemon::OnInit() {
26 int return_code = chromeos::DBusServiceDaemon::OnInit();
27 if (return_code != EX_OK) {
28 return return_code;
29 }
30
Peter Qiu5dd242d2014-10-14 12:23:21 -070031 // Signal that we've acquired all resources.
32 startup_callback_.Run();
33 return EX_OK;
34}
35
36void Daemon::OnShutdown(int* return_code) {
37 manager_.reset();
38 chromeos::DBusServiceDaemon::OnShutdown(return_code);
39}
40
Peter Qiu376e4042014-11-13 09:40:28 -080041void Daemon::RegisterDBusObjectsAsync(
42 chromeos::dbus_utils::AsyncEventSequencer* sequencer) {
43 manager_.reset(new apmanager::Manager());
44 manager_->RegisterAsync(object_manager_.get(), sequencer);
45}
46
Peter Qiu5dd242d2014-10-14 12:23:21 -070047} // namespace apmanager