1a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan//
2a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan// Copyright (C) 2016 The Android Open Source Project
3a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan//
4a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan// Licensed under the Apache License, Version 2.0 (the "License");
5a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan// you may not use this file except in compliance with the License.
6a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan// You may obtain a copy of the License at
7a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan//
8a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan//      http://www.apache.org/licenses/LICENSE-2.0
9a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan//
10a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan// Unless required by applicable law or agreed to in writing, software
11a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan// distributed under the License is distributed on an "AS IS" BASIS,
12a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan// See the License for the specific language governing permissions and
14a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan// limitations under the License.
15a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan//
16a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan
17a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan#include "shill/binder/binder_adaptor.h"
18a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan
19a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan#include <string>
20a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan
21a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan#include <utils/String16.h>
22a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan
23a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan#include "android/system/connectivity/shill/IPropertyChangedCallback.h"
24a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan#include "shill/logging.h"
25a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan
26a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tanusing android::sp;
27a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tanusing android::String16;
28a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tanusing android::system::connectivity::shill::IPropertyChangedCallback;
29a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tanusing std::string;
30a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan
31a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tannamespace shill {
32a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan
33a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tannamespace Logging {
34a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tanstatic auto kModuleLogScope = ScopeLogger::kBinder;
35a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tanstatic string ObjectID(BinderAdaptor* b) {
36a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan  return "(binder_adaptor)";
37a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan}
38a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan}  // namespace Logging
39a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan
40a04c6448da585d8bef65b8bbd44711fd7882c917Samuel TanBinderAdaptor::BinderAdaptor(const string& id) : id_(id) {
41a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan  SLOG(this, 2) << "BinderAdaptor: " << id;
42a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan}
43a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan
44a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tanvoid BinderAdaptor::AddPropertyChangedSignalHandler(
45a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan    const sp<IPropertyChangedCallback>& property_changed_callback) {
46a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan  property_changed_callbacks_.push_back(property_changed_callback);
47a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan}
48a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan
49a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tanvoid BinderAdaptor::SendPropertyChangedSignal(const string& name) {
50a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan  for (const auto& callback : property_changed_callbacks_) {
51a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan    callback->OnPropertyChanged(String16(name.c_str()));
52a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan  }
53a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan}
54a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan
55a04c6448da585d8bef65b8bbd44711fd7882c917Samuel Tan}  // namespace shill
56