2 * Copyright (C) 2008 The Android Open Source Project
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
17 #ifndef ANDROID_BINDER_H
18 #define ANDROID_BINDER_H
20 #include <binder/IBinder.h>
22 // ---------------------------------------------------------------------------
25 class BBinder : public IBinder
30 virtual const String16& getInterfaceDescriptor() const;
31 virtual bool isBinderAlive() const;
32 virtual status_t pingBinder();
33 virtual status_t dump(int fd, const Vector<String16>& args);
35 virtual status_t transact( uint32_t code,
40 virtual status_t linkToDeath(const sp<DeathRecipient>& recipient,
44 virtual status_t unlinkToDeath( const wp<DeathRecipient>& recipient,
47 wp<DeathRecipient>* outRecipient = NULL);
49 virtual void attachObject( const void* objectID,
52 object_cleanup_func func);
53 virtual void* findObject(const void* objectID) const;
54 virtual void detachObject(const void* objectID);
56 virtual BBinder* localBinder();
61 virtual status_t onTransact( uint32_t code,
67 BBinder(const BBinder& o);
68 BBinder& operator=(const BBinder& o);
76 // ---------------------------------------------------------------------------
78 class BpRefBase : public virtual RefBase
81 BpRefBase(const sp<IBinder>& o);
83 virtual void onFirstRef();
84 virtual void onLastStrongRef(const void* id);
85 virtual bool onIncStrongAttempted(uint32_t flags, const void* id);
87 inline IBinder* remote() { return mRemote; }
88 inline IBinder* remote() const { return mRemote; }
91 BpRefBase(const BpRefBase& o);
92 BpRefBase& operator=(const BpRefBase& o);
94 IBinder* const mRemote;
95 RefBase::weakref_type* mRefs;
96 volatile int32_t mState;
99 }; // namespace android
101 // ---------------------------------------------------------------------------
103 #endif // ANDROID_BINDER_H