blob: 27c3235daf3de81ee07c744590eb489ccda353f5 [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(
14 DBusManager *dbus_manager,
15 const string &name,
16 const NameAppearedCallback &name_appeared_callback,
17 const NameVanishedCallback &name_vanished_callback)
18 : 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
28void DBusNameWatcher::OnNameOwnerChanged(const string &owner) const {
29 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