blob: e0af5d4ba8ab554a0fa20d5975da9c0cbe9230ea [file] [log] [blame]
Brett Chabotc9ee3302020-01-31 09:20:28 -08001/*
2 * Copyright (C) 2020 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#pragma once
18
19#include <binder/IServiceManager.h>
20
21#include <map>
Steven Morelandedd4e072021-04-21 00:27:29 +000022#include <optional>
Jayant Chowdharya0a8eb22022-05-20 03:30:09 +000023#include <vector>
Brett Chabotc9ee3302020-01-31 09:20:28 -080024
25namespace android {
26
27/**
28 * A local host simple implementation of IServiceManager, that does not
29 * communicate over binder.
30*/
31class ServiceManager : public IServiceManager {
32public:
33 ServiceManager();
34
Brett Chabotc9ee3302020-01-31 09:20:28 -080035 sp<IBinder> getService( const String16& name) const override;
36
Brett Chabotc9ee3302020-01-31 09:20:28 -080037 sp<IBinder> checkService( const String16& name) const override;
38
Brett Chabotc9ee3302020-01-31 09:20:28 -080039 status_t addService(const String16& name, const sp<IBinder>& service,
40 bool allowIsolated = false,
41 int dumpsysFlags = DUMP_FLAG_PRIORITY_DEFAULT) override;
42
Brett Chabotc9ee3302020-01-31 09:20:28 -080043 Vector<String16> listServices(int dumpsysFlags = 0) override;
44
45 IBinder* onAsBinder() override;
46
Brett Chabotc9ee3302020-01-31 09:20:28 -080047 sp<IBinder> waitForService(const String16& name) override;
48
Steven Morelandc68e32d2020-09-24 16:34:21 +000049 bool isDeclared(const String16& name) override;
Brett Chabotc9ee3302020-01-31 09:20:28 -080050
Steven Moreland2e293aa2020-09-23 00:25:16 +000051 Vector<String16> getDeclaredInstances(const String16& iface) override;
52
Steven Morelandedd4e072021-04-21 00:27:29 +000053 std::optional<String16> updatableViaApex(const String16& name) override;
54
Devin Moore5e4c2f12021-09-09 22:36:33 +000055 std::optional<IServiceManager::ConnectionInfo> getConnectionInfo(const String16& name) override;
56
Jayant Chowdhary30700942022-01-31 14:12:40 -080057 status_t registerForNotifications(const String16& name,
58 const sp<LocalRegistrationCallback>& callback) override;
59
60 status_t unregisterForNotifications(const String16& name,
61 const sp<LocalRegistrationCallback>& callback) override;
Jayant Chowdharya0a8eb22022-05-20 03:30:09 +000062
63 std::vector<IServiceManager::ServiceDebugInfo> getServiceDebugInfo() override;
64
Brett Chabotc9ee3302020-01-31 09:20:28 -080065private:
66 std::map<String16, sp<IBinder>> mNameToService;
67};
68
69} // namespace android