• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
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 interface IBinderRpcTest {
sendString(@tf8InCpp String str)18     oneway void sendString(@utf8InCpp String str);
doubleString(@tf8InCpp String str)19     @utf8InCpp String doubleString(@utf8InCpp String str);
20 
21     // number of known RPC binders to process, RpcState::countBinders by session
countBinders()22     int[] countBinders();
23 
24     // Caller sends server, callee pings caller's server and returns error code.
pingMe(IBinder binder)25     int pingMe(IBinder binder);
repeatBinder(@ullable IBinder binder)26     @nullable IBinder repeatBinder(@nullable IBinder binder);
27 
holdBinder(@ullable IBinder binder)28     void holdBinder(@nullable IBinder binder);
getHeldBinder()29     @nullable IBinder getHeldBinder();
30 
31     // Idea is client creates its own instance of IBinderRpcTest and calls this,
32     // and the server calls 'binder' with (calls - 1) passing itself as 'binder',
33     // going back and forth until calls = 0
nestMe(IBinderRpcTest binder, int calls)34     void nestMe(IBinderRpcTest binder, int calls);
35 
36     // should always return the same binder
alwaysGiveMeTheSameBinder()37     IBinder alwaysGiveMeTheSameBinder();
38 
39     // Idea is that the server will not hold onto the session, the remote session
40     // object must. This is to test lifetimes of binder objects, and consequently, also
41     // identity (since by assigning sessions names, we can make sure a section always
42     // references the session it was originally opened with).
openSession(@tf8InCpp String name)43     IBinderRpcSession openSession(@utf8InCpp String name);
44 
45     // Decremented in ~IBinderRpcSession
getNumOpenSessions()46     int getNumOpenSessions();
47 
48     // primitives to test threading behavior
lock()49     void lock();
unlockInMsAsync(int ms)50     oneway void unlockInMsAsync(int ms);
lockUnlock()51     void lockUnlock(); // locks and unlocks a mutex
52 
53     // take up binder thread for some time
sleepMs(int ms)54     void sleepMs(int ms);
sleepMsAsync(int ms)55     oneway void sleepMsAsync(int ms);
56 
die(boolean cleanup)57     void die(boolean cleanup);
58 }
59