You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							105 lines
						
					
					
						
							3.6 KiB
						
					
					
				
			
		
		
	
	
							105 lines
						
					
					
						
							3.6 KiB
						
					
					
				| /*
 | |
|  * Copyright (C) 2008 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.
 | |
|  */
 | |
| 
 | |
| #ifndef ANDROID_BINDER_H
 | |
| #define ANDROID_BINDER_H
 | |
| 
 | |
| #include <stdatomic.h>
 | |
| #include <stdint.h>
 | |
| #include <binder/IBinder.h>
 | |
| 
 | |
| // ---------------------------------------------------------------------------
 | |
| namespace android {
 | |
| 
 | |
| class BBinder : public IBinder
 | |
| {
 | |
| public:
 | |
|                         BBinder();
 | |
| 
 | |
|     virtual const String16& getInterfaceDescriptor() const;
 | |
|     virtual bool        isBinderAlive() const;
 | |
|     virtual status_t    pingBinder();
 | |
|     virtual status_t    dump(int fd, const Vector<String16>& args);
 | |
| 
 | |
|     virtual status_t    transact(   uint32_t code,
 | |
|                                     const Parcel& data,
 | |
|                                     Parcel* reply,
 | |
|                                     uint32_t flags = 0);
 | |
| 
 | |
|     virtual status_t    linkToDeath(const sp<DeathRecipient>& recipient,
 | |
|                                     void* cookie = NULL,
 | |
|                                     uint32_t flags = 0);
 | |
| 
 | |
|     virtual status_t    unlinkToDeath(  const wp<DeathRecipient>& recipient,
 | |
|                                         void* cookie = NULL,
 | |
|                                         uint32_t flags = 0,
 | |
|                                         wp<DeathRecipient>* outRecipient = NULL);
 | |
| 
 | |
|     virtual void        attachObject(   const void* objectID,
 | |
|                                         void* object,
 | |
|                                         void* cleanupCookie,
 | |
|                                         object_cleanup_func func);
 | |
|     virtual void*       findObject(const void* objectID) const;
 | |
|     virtual void        detachObject(const void* objectID);
 | |
| 
 | |
|     virtual BBinder*    localBinder();
 | |
| 
 | |
| protected:
 | |
|     virtual             ~BBinder();
 | |
| 
 | |
|     virtual status_t    onTransact( uint32_t code,
 | |
|                                     const Parcel& data,
 | |
|                                     Parcel* reply,
 | |
|                                     uint32_t flags = 0);
 | |
| 
 | |
| private:
 | |
|                         BBinder(const BBinder& o);
 | |
|             BBinder&    operator=(const BBinder& o);
 | |
| 
 | |
|     class Extras;
 | |
| 
 | |
|     atomic_uintptr_t    mExtras;  // should be atomic<Extras *>
 | |
|             void*       mReserved0;
 | |
| };
 | |
| 
 | |
| // ---------------------------------------------------------------------------
 | |
| 
 | |
| class BpRefBase : public virtual RefBase
 | |
| {
 | |
| protected:
 | |
|                             BpRefBase(const sp<IBinder>& o);
 | |
|     virtual                 ~BpRefBase();
 | |
|     virtual void            onFirstRef();
 | |
|     virtual void            onLastStrongRef(const void* id);
 | |
|     virtual bool            onIncStrongAttempted(uint32_t flags, const void* id);
 | |
| 
 | |
|     inline  IBinder*        remote()                { return mRemote; }
 | |
|     inline  IBinder*        remote() const          { return mRemote; }
 | |
| 
 | |
| private:
 | |
|                             BpRefBase(const BpRefBase& o);
 | |
|     BpRefBase&              operator=(const BpRefBase& o);
 | |
| 
 | |
|     IBinder* const          mRemote;
 | |
|     RefBase::weakref_type*  mRefs;
 | |
|     volatile int32_t        mState;
 | |
| };
 | |
| 
 | |
| }; // namespace android
 | |
| 
 | |
| // ---------------------------------------------------------------------------
 | |
| 
 | |
| #endif // ANDROID_BINDER_H
 | |
| 
 |