Merge "Allow MQDescriptors with null native_handles to be passed over hwbinder"
diff --git a/transport/Android.bp b/transport/Android.bp
index b1df04e..1c1a310 100644
--- a/transport/Android.bp
+++ b/transport/Android.bp
@@ -58,6 +58,7 @@
srcs: [
"HidlBinderSupport.cpp",
"HidlPassthroughSupport.cpp",
+ "HidlTransportSupport.cpp",
"LegacySupport.cpp",
"ServiceManagement.cpp",
"Static.cpp"
diff --git a/transport/HidlTransportSupport.cpp b/transport/HidlTransportSupport.cpp
new file mode 100644
index 0000000..a5ec8e2
--- /dev/null
+++ b/transport/HidlTransportSupport.cpp
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2017 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.
+ */
+#include <hidl/HidlTransportSupport.h>
+
+#include <hidl/HidlBinderSupport.h>
+
+namespace android {
+namespace hardware {
+
+void configureRpcThreadpool(size_t maxThreads, bool callerWillJoin) {
+ // TODO(b/32756130) this should be transport-dependent
+ configureBinderRpcThreadpool(maxThreads, callerWillJoin);
+}
+void joinRpcThreadpool() {
+ // TODO(b/32756130) this should be transport-dependent
+ joinBinderRpcThreadpool();
+}
+
+}
+}
\ No newline at end of file
diff --git a/transport/ServiceManagement.cpp b/transport/ServiceManagement.cpp
index a1e570f..15abb92 100644
--- a/transport/ServiceManagement.cpp
+++ b/transport/ServiceManagement.cpp
@@ -186,8 +186,7 @@
return nullptr;
}
- Return<bool> add(const hidl_vec<hidl_string>& /* interfaceChain */,
- const hidl_string& /* name */,
+ Return<bool> add(const hidl_string& /* name */,
const sp<IBase>& /* service */) override {
LOG(FATAL) << "Cannot register services with passthrough service manager.";
return false;
diff --git a/transport/include/hidl/HidlTransportSupport.h b/transport/include/hidl/HidlTransportSupport.h
index 86379a9..8476f47 100644
--- a/transport/include/hidl/HidlTransportSupport.h
+++ b/transport/include/hidl/HidlTransportSupport.h
@@ -40,18 +40,12 @@
* configureRpcThreadPool(1, true); // transport won't launch any threads by itself
*
*/
-inline void configureRpcThreadpool(size_t maxThreads, bool callerWillJoin) {
- // TODO(b/32756130) this should be transport-dependent
- configureBinderRpcThreadpool(maxThreads, callerWillJoin);
-}
+void configureRpcThreadpool(size_t maxThreads, bool callerWillJoin);
/* Joins a threadpool that you configured earlier with
* configureRpcThreadPool(x, true);
*/
-inline void joinRpcThreadpool() {
- // TODO(b/32756130) this should be transport-dependent
- joinBinderRpcThreadpool();
-}
+void joinRpcThreadpool();
// cast the interface IParent to IChild.
// Return nullptr if parent is null or any failure.
diff --git a/transport/manager/1.0/IServiceManager.hal b/transport/manager/1.0/IServiceManager.hal
index 2bbbe22..77cf253 100644
--- a/transport/manager/1.0/IServiceManager.hal
+++ b/transport/manager/1.0/IServiceManager.hal
@@ -52,23 +52,26 @@
get(string fqName, string name) generates (interface service);
/**
- * Register a service. The service manager must be registered as all of the
- * services that it inherits from.
+ * Register a service. The service manager must retrieve the (inherited)
+ * interfaces that this service implements, and register them along with
+ * the service.
+ *
+ * Each interface must have its own namespace for instance names. If you
+ * have two unrelated interfaces IFoo and IBar, it must be valid to call:
+ *
+ * add("my_instance", foo); // foo implements IFoo
+ * add("my_instance", bar); // bar implements IBar
*
* WARNING: This function is for libhidl/HwBinder use only. You are likely
* looking for 'INTERFACE::registerAsService("name")' instead.
*
- * @param interfaceChain List of fully-qualified interface names. The first
- * must be the actual interface name. Subsequent names must
- * follow the inheritance hierarchy of the interface.
* @param name Instance name. Must also be used to retrieve service.
* @param service Handle to registering service.
*
* @return success Whether or not the service was registered.
*
*/
- add(vec<string> interfaceChain, string name, interface service)
- generates (bool success);
+ add(string name, interface service) generates (bool success);
/**
* List all registered services. Must be sorted.