/* * Copyright (C) 2024 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #pragma once #include #include #include namespace android { class BackendUnifiedServiceManager : public android::os::BnServiceManager { public: explicit BackendUnifiedServiceManager(const sp& impl); sp getImpl(); binder::Status getService(const ::std::string& name, sp* _aidl_return) override; binder::Status getService2(const ::std::string& name, os::Service* out) override; binder::Status checkService(const ::std::string& name, os::Service* out) override; binder::Status addService(const ::std::string& name, const sp& service, bool allowIsolated, int32_t dumpPriority) override; binder::Status listServices(int32_t dumpPriority, ::std::vector<::std::string>* _aidl_return) override; binder::Status registerForNotifications(const ::std::string& name, const sp& callback) override; binder::Status unregisterForNotifications(const ::std::string& name, const sp& callback) override; binder::Status isDeclared(const ::std::string& name, bool* _aidl_return) override; binder::Status getDeclaredInstances(const ::std::string& iface, ::std::vector<::std::string>* _aidl_return) override; binder::Status updatableViaApex(const ::std::string& name, ::std::optional<::std::string>* _aidl_return) override; binder::Status getUpdatableNames(const ::std::string& apexName, ::std::vector<::std::string>* _aidl_return) override; binder::Status getConnectionInfo(const ::std::string& name, ::std::optional* _aidl_return) override; binder::Status registerClientCallback(const ::std::string& name, const sp& service, const sp& callback) override; binder::Status tryUnregisterService(const ::std::string& name, const sp& service) override; binder::Status getServiceDebugInfo(::std::vector* _aidl_return) override; // for legacy ABI const String16& getInterfaceDescriptor() const override { return mTheRealServiceManager->getInterfaceDescriptor(); } private: sp mTheRealServiceManager; void toBinderService(const os::Service& in, os::Service* _out); }; sp getBackendUnifiedServiceManager(); } // namespace android