1*8222fbe1SAndroid Build Coastguard Worker/* 2*8222fbe1SAndroid Build Coastguard Worker * Copyright (C) 2018 The Android Open Source Project 3*8222fbe1SAndroid Build Coastguard Worker * 4*8222fbe1SAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 5*8222fbe1SAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 6*8222fbe1SAndroid Build Coastguard Worker * You may obtain a copy of the License at 7*8222fbe1SAndroid Build Coastguard Worker * 8*8222fbe1SAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 9*8222fbe1SAndroid Build Coastguard Worker * 10*8222fbe1SAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 11*8222fbe1SAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 12*8222fbe1SAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*8222fbe1SAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 14*8222fbe1SAndroid Build Coastguard Worker * limitations under the License. 15*8222fbe1SAndroid Build Coastguard Worker */ 16*8222fbe1SAndroid Build Coastguard Worker 17*8222fbe1SAndroid Build Coastguard Workerpackage [email protected]; 18*8222fbe1SAndroid Build Coastguard Worker 19*8222fbe1SAndroid Build Coastguard Workerimport @1.1::IServiceManager; 20*8222fbe1SAndroid Build Coastguard Worker 21*8222fbe1SAndroid Build Coastguard Workerimport IClientCallback; 22*8222fbe1SAndroid Build Coastguard Worker 23*8222fbe1SAndroid Build Coastguard Workerinterface IServiceManager extends @1.1::IServiceManager { 24*8222fbe1SAndroid Build Coastguard Worker /** 25*8222fbe1SAndroid Build Coastguard Worker * Adds a callback that must be called when the specified server has no clients. 26*8222fbe1SAndroid Build Coastguard Worker * 27*8222fbe1SAndroid Build Coastguard Worker * If the service has clients at the time of registration, the callback is called with 28*8222fbe1SAndroid Build Coastguard Worker * hasClients true. After that, it is called based on the changes in clientele. 29*8222fbe1SAndroid Build Coastguard Worker * 30*8222fbe1SAndroid Build Coastguard Worker * @param fqName Fully-qualified interface name (used to register) 31*8222fbe1SAndroid Build Coastguard Worker * @param name Instance name (of the registered service) 32*8222fbe1SAndroid Build Coastguard Worker * @param server non-null service waiting to have no clients (previously registered) 33*8222fbe1SAndroid Build Coastguard Worker * @param cb non-null callback to call when there are no clients 34*8222fbe1SAndroid Build Coastguard Worker * @return success 35*8222fbe1SAndroid Build Coastguard Worker * true on success 36*8222fbe1SAndroid Build Coastguard Worker * false if either 37*8222fbe1SAndroid Build Coastguard Worker * - the server or cb parameters are null 38*8222fbe1SAndroid Build Coastguard Worker * - this is called by a process other than the server process 39*8222fbe1SAndroid Build Coastguard Worker */ 40*8222fbe1SAndroid Build Coastguard Worker registerClientCallback(string fqName, 41*8222fbe1SAndroid Build Coastguard Worker string name, 42*8222fbe1SAndroid Build Coastguard Worker interface server, 43*8222fbe1SAndroid Build Coastguard Worker IClientCallback cb) 44*8222fbe1SAndroid Build Coastguard Worker generates (bool success); 45*8222fbe1SAndroid Build Coastguard Worker 46*8222fbe1SAndroid Build Coastguard Worker /** 47*8222fbe1SAndroid Build Coastguard Worker * Removes a callback previously registered with registerClientCallback. 48*8222fbe1SAndroid Build Coastguard Worker * 49*8222fbe1SAndroid Build Coastguard Worker * If server is null, then this must remove the cb from all matching services. 50*8222fbe1SAndroid Build Coastguard Worker * 51*8222fbe1SAndroid Build Coastguard Worker * @param server service registered with registerClientCallback 52*8222fbe1SAndroid Build Coastguard Worker * @param cb non-null callback to remove 53*8222fbe1SAndroid Build Coastguard Worker * @return success 54*8222fbe1SAndroid Build Coastguard Worker * true if the server(s) have been removed 55*8222fbe1SAndroid Build Coastguard Worker * false if cb is null or if the client callback or server could not be found 56*8222fbe1SAndroid Build Coastguard Worker */ 57*8222fbe1SAndroid Build Coastguard Worker unregisterClientCallback(interface server, IClientCallback cb) generates (bool success); 58*8222fbe1SAndroid Build Coastguard Worker 59*8222fbe1SAndroid Build Coastguard Worker /** 60*8222fbe1SAndroid Build Coastguard Worker * Exactly the same as @1.0::IServiceManager.add, but the interfaceChain of the service is 61*8222fbe1SAndroid Build Coastguard Worker * provided in the same call. 62*8222fbe1SAndroid Build Coastguard Worker * 63*8222fbe1SAndroid Build Coastguard Worker * @param name Instance name. Must also be used to retrieve service. 64*8222fbe1SAndroid Build Coastguard Worker * @param service Handle to registering service. 65*8222fbe1SAndroid Build Coastguard Worker * @param chain service->interfaceChain 66*8222fbe1SAndroid Build Coastguard Worker * 67*8222fbe1SAndroid Build Coastguard Worker * @return success Whether or not the service was registered. 68*8222fbe1SAndroid Build Coastguard Worker */ 69*8222fbe1SAndroid Build Coastguard Worker addWithChain(string name, interface service, vec<string> chain) generates (bool success); 70*8222fbe1SAndroid Build Coastguard Worker 71*8222fbe1SAndroid Build Coastguard Worker /** 72*8222fbe1SAndroid Build Coastguard Worker * List all instances of a particular service from the manifest. Must be sorted. These HALs 73*8222fbe1SAndroid Build Coastguard Worker * may not be started if they are lazy. 74*8222fbe1SAndroid Build Coastguard Worker * 75*8222fbe1SAndroid Build Coastguard Worker * See also @1.0::IServiceManager's listByInterface function. 76*8222fbe1SAndroid Build Coastguard Worker * 77*8222fbe1SAndroid Build Coastguard Worker * @param fqName Fully-qualified interface name. 78*8222fbe1SAndroid Build Coastguard Worker * 79*8222fbe1SAndroid Build Coastguard Worker * @return instanceNames List of instance names running the particular service. 80*8222fbe1SAndroid Build Coastguard Worker */ 81*8222fbe1SAndroid Build Coastguard Worker listManifestByInterface(string fqName) generates (vec<string> instanceNames); 82*8222fbe1SAndroid Build Coastguard Worker 83*8222fbe1SAndroid Build Coastguard Worker /** 84*8222fbe1SAndroid Build Coastguard Worker * Unregisters a service if there are no clients for it. This must only unregister the 85*8222fbe1SAndroid Build Coastguard Worker * service if it is called from the same process that registered the service. 86*8222fbe1SAndroid Build Coastguard Worker * 87*8222fbe1SAndroid Build Coastguard Worker * This unregisters all instances of the service, even if they are under a different instance 88*8222fbe1SAndroid Build Coastguard Worker * name. 89*8222fbe1SAndroid Build Coastguard Worker * 90*8222fbe1SAndroid Build Coastguard Worker * Recommended usage is when creating a lazy process, try unregistering when IClientCallback's 91*8222fbe1SAndroid Build Coastguard Worker * onClients(*, false) is called. If this unregister is successful, then it is safe to exit. If 92*8222fbe1SAndroid Build Coastguard Worker * it is unsuccessful, then you can assume a client re-associated with the server. If a process 93*8222fbe1SAndroid Build Coastguard Worker * has multiple servers, and only some succeed in unregistration, then the unregistered services 94*8222fbe1SAndroid Build Coastguard Worker * can be re-registered. 95*8222fbe1SAndroid Build Coastguard Worker * 96*8222fbe1SAndroid Build Coastguard Worker * See also addWithChain and @1.0::IServiceManager's add. 97*8222fbe1SAndroid Build Coastguard Worker * 98*8222fbe1SAndroid Build Coastguard Worker * @param fqName Fully-qualified interface name. 99*8222fbe1SAndroid Build Coastguard Worker * @param name Instance name. 100*8222fbe1SAndroid Build Coastguard Worker * @param service Handle to registering service. 101*8222fbe1SAndroid Build Coastguard Worker * 102*8222fbe1SAndroid Build Coastguard Worker * @return success Whether the service was successfully unregistered. 103*8222fbe1SAndroid Build Coastguard Worker */ 104*8222fbe1SAndroid Build Coastguard Worker tryUnregister(string fqName, string name, interface service) generates (bool success); 105*8222fbe1SAndroid Build Coastguard Worker}; 106