blob: 936bb4a6803e72b687c3bb43db914e0c8e899ea2 [file] [log] [blame]
Ben Chan084faca2013-07-02 14:25:12 -07001// Copyright (c) 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 "shill/dbus_name_watcher.h"
6
7#include "shill/dbus_manager.h"
8
9using std::string;
10
11namespace shill {
12
13DBusNameWatcher::DBusNameWatcher(
Paul Stewarta794cd62015-06-16 13:13:10 -070014 DBusManager* dbus_manager,
15 const string& name,
16 const NameAppearedCallback& name_appeared_callback,
17 const NameVanishedCallback& name_vanished_callback)
Ben Chan084faca2013-07-02 14:25:12 -070018 : dbus_manager_(dbus_manager->AsWeakPtr()),
19 name_(name),
20 name_appeared_callback_(name_appeared_callback),
21 name_vanished_callback_(name_vanished_callback) {}
22
23DBusNameWatcher::~DBusNameWatcher() {
24 if (dbus_manager_)
25 dbus_manager_->RemoveNameWatcher(this);
26}
27
Paul Stewarta794cd62015-06-16 13:13:10 -070028void DBusNameWatcher::OnNameOwnerChanged(const string& owner) const {
Ben Chan084faca2013-07-02 14:25:12 -070029 if (owner.empty()) {
30 if (!name_vanished_callback_.is_null()) {
31 name_vanished_callback_.Run(name_);
32 }
33 } else {
34 if (!name_appeared_callback_.is_null()) {
35 name_appeared_callback_.Run(name_, owner);
36 }
37 }
38}
39
40} // namespace shill