summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteven Moreland <smoreland@google.com>2018-10-08 15:56:44 -0700
committerSteven Moreland <smoreland@google.com>2018-10-10 02:27:02 +0000
commite3a28b1a1559895cf26ad6586456654f9910e5dc (patch)
treef6c0db2d098fa8831c7abf777e34d09a7afbe453
parent562d525c2ab1dfc12d05694175634f047242a2d7 (diff)
downloadnative-e3a28b1a1559895cf26ad6586456654f9910e5dc.tar.gz
libbinder_ndk: NDK comments for interface utils
The comments in this file were not consistent with the rest of the module. Bug: 112664205 Test: N/A Change-Id: Ie95a8d34f297628c49bcc6810f432ade61dcd62a
-rw-r--r--libs/binder/ndk/include_ndk/android/binder_interface_utils.h33
1 files changed, 26 insertions, 7 deletions
diff --git a/libs/binder/ndk/include_ndk/android/binder_interface_utils.h b/libs/binder/ndk/include_ndk/android/binder_interface_utils.h
index 6782ce0c3a..5a4196a3f2 100644
--- a/libs/binder/ndk/include_ndk/android/binder_interface_utils.h
+++ b/libs/binder/ndk/include_ndk/android/binder_interface_utils.h
@@ -37,12 +37,18 @@
namespace ndk {
-// analog using std::shared_ptr for RefBase-like semantics
+/**
+ * analog using std::shared_ptr for internally held refcount
+ */
class SharedRefBase {
public:
SharedRefBase() {}
virtual ~SharedRefBase() {}
+ /**
+ * A shared_ptr must be held to this object when this is called. This must be called once during
+ * the lifetime of this object.
+ */
std::shared_ptr<SharedRefBase> ref() {
std::shared_ptr<SharedRefBase> thiz = mThis.lock();
@@ -51,6 +57,9 @@ public:
return thiz;
}
+ /**
+ * Convenience method for a ref (see above) which automatically casts to the desired child type.
+ */
template <typename CHILD>
std::shared_ptr<CHILD> ref() {
return std::static_pointer_cast<CHILD>(ref());
@@ -70,13 +79,17 @@ private:
std::weak_ptr<SharedRefBase> mThis;
};
-// wrapper analog to IInterface
+/**
+ * wrapper analog to IInterface
+ */
class ICInterface : public SharedRefBase {
public:
ICInterface() {}
virtual ~ICInterface() {}
- // This either returns the single existing implementation or creates a new implementation.
+ /**
+ * This either returns the single existing implementation or creates a new implementation.
+ */
virtual SpAIBinder asBinder() = 0;
/**
@@ -86,7 +99,9 @@ public:
virtual bool isRemote() = 0;
};
-// wrapper analog to BnInterface
+/**
+ * implementation of IInterface for server (n = native)
+ */
template <typename INTERFACE>
class BnCInterface : public INTERFACE {
public:
@@ -98,8 +113,10 @@ public:
bool isRemote() override { return true; }
protected:
- // This function should only be called by asBinder. Otherwise, there is a possibility of
- // multiple AIBinder* objects being created for the same instance of an object.
+ /**
+ * This function should only be called by asBinder. Otherwise, there is a possibility of
+ * multiple AIBinder* objects being created for the same instance of an object.
+ */
virtual SpAIBinder createBinder() = 0;
private:
@@ -107,7 +124,9 @@ private:
ScopedAIBinder_Weak mWeakBinder;
};
-// wrapper analog to BpInterfae
+/**
+ * implementation of IInterface for client (p = proxy)
+ */
template <typename INTERFACE>
class BpCInterface : public INTERFACE {
public: