blob: ae3fdfd397d90ab7a3b0d006591eea91d8af522b [file] [log] [blame]
/*
* Copyright (C) 2018 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.
*/
package android.hidl.manager@1.2;
import @1.1::IServiceManager;
import IClientCallback;
interface IServiceManager extends @1.1::IServiceManager {
// TODO(b/66921961): additional functionality for the next release:
// - Better notifications (onRegistration will contain the interface)
// - Method to list interfaces in the manifest (for b/76108617, since if they are
// lazy, they will no longer show up in listByInterface)
/**
* Adds a callback that must be called when the specified server has no clients.
*
* If the service has clients at the time of registration, the callback is called with
* hasClients true. After that, it is called based on the changes in clientele.
*
* @param server non-null service waiting to have no clients
* @param cb non-null callback to call when there are no clients
* @return success
* true on success
* false if either
* - the server or cb parameters are null
* - this is called by a process other than the server process
*/
registerClientCallback(interface server, IClientCallback cb) generates (bool success);
/**
* Removes a callback previously registered with registerClientCallback.
*
* If server is null, then this must remove the cb from all matching services.
*
* @param server service registered with registerClientCallback
* @param cb non-null callback to remove
* @return success
* true if the server(s) have been removed
* false if cb is null or if the client callback or server could not be found
*/
unregisterClientCallback(interface server, IClientCallback cb) generates (bool success);
/**
* Exactly the same as @1.0::IServiceManager.add, but the interfaceChain of the service is
* provided in the same call.
*
* @param name Instance name. Must also be used to retrieve service.
* @param service Handle to registering service.
* @param chain service->interfaceChain
*
* @return success Whether or not the service was registered.
*/
addWithChain(string name, interface service, vec<string> chain) generates (bool success);
};