OSDN Git Service

Update for hidlized hwservicemanager.
authorSteven Moreland <smoreland@google.com>
Mon, 24 Oct 2016 20:44:41 +0000 (13:44 -0700)
committerSteven Moreland <smoreland@google.com>
Wed, 2 Nov 2016 20:43:28 +0000 (13:43 -0700)
Bug: 32313592
Test: pass (end to end for others in topic).
Change-Id: I7ac6bbe8b8de5e1cb86759cbe6f31fac642cec28

core/jni/android_os_HwBinder.cpp
core/jni/android_os_HwRemoteBinder.cpp

index 816d5df..1a33d91 100644 (file)
@@ -24,8 +24,9 @@
 #include "android_os_HwRemoteBinder.h"
 
 #include <JNIHelp.h>
+#include <android/hidl/manager/1.0/IServiceManager.h>
 #include <android_runtime/AndroidRuntime.h>
-#include <hidl/IServiceManager.h>
+#include <hidl/ServiceManagement.h>
 #include <hidl/Status.h>
 #include <hwbinder/ProcessState.h>
 #include <nativehelper/ScopedLocalRef.h>
@@ -220,27 +221,31 @@ static void JHwBinder_native_registerService(
         return;  // XXX exception already pending?
     }
 
-    const hardware::hidl_version kVersion =
-        hardware::make_hidl_version(versionMajor, versionMinor);
+    using android::hidl::manager::V1_0::IServiceManager;
+
+    const IServiceManager::Version kVersion {
+        .major = static_cast<uint16_t>(versionMajor),
+        .minor = static_cast<uint16_t>(versionMinor),
+    };
 
     sp<hardware::IBinder> binder = JHwBinder::GetNativeContext(env, thiz);
 
-    status_t err = hardware::defaultServiceManager()->addService(
-                String16(
-                    reinterpret_cast<const char16_t *>(serviceName),
-                    env->GetStringLength(serviceNameObj)),
+    bool ok = hardware::defaultServiceManager()->add(
+                String8(String16(
+                          reinterpret_cast<const char16_t *>(serviceName),
+                          env->GetStringLength(serviceNameObj))).string(),
                 binder,
                 kVersion);
 
     env->ReleaseStringCritical(serviceNameObj, serviceName);
     serviceName = NULL;
 
-    if (err == OK) {
+    if (ok) {
         LOG(INFO) << "Starting thread pool.";
         ::android::hardware::ProcessState::self()->startThreadPool();
     }
 
-    signalExceptionForError(env, err);
+    signalExceptionForError(env, (ok ? OK : UNKNOWN_ERROR));
 }
 
 static jobject JHwBinder_native_getService(
@@ -268,8 +273,12 @@ static jobject JHwBinder_native_getService(
         return NULL;  // XXX exception already pending?
     }
 
-    const hardware::hidl_version kVersion =
-        hardware::make_hidl_version(versionMajor, versionMinor);
+    using android::hidl::manager::V1_0::IServiceManager;
+
+    const IServiceManager::Version kVersion {
+        .major = static_cast<uint16_t>(versionMajor),
+        .minor = static_cast<uint16_t>(versionMinor),
+    };
 
     LOG(INFO) << "looking for service '"
               << String8(String16(
@@ -277,12 +286,15 @@ static jobject JHwBinder_native_getService(
                           env->GetStringLength(serviceNameObj))).string()
               << "'";
 
-    sp<hardware::IBinder> service =
-        hardware::defaultServiceManager()->getService(
-                String16(
-                    reinterpret_cast<const char16_t *>(serviceName),
-                    env->GetStringLength(serviceNameObj)),
-                kVersion);
+    sp<hardware::IBinder> service;
+    hardware::defaultServiceManager()->get(
+            String8(String16(
+                      reinterpret_cast<const char16_t *>(serviceName),
+                      env->GetStringLength(serviceNameObj))).string(),
+            kVersion,
+            [&service](sp<hardware::IBinder> out) {
+                service = out;
+            });
 
     env->ReleaseStringCritical(serviceNameObj, serviceName);
     serviceName = NULL;
index 3023ba8..1d5d6d5 100644 (file)
@@ -24,7 +24,6 @@
 
 #include <JNIHelp.h>
 #include <android_runtime/AndroidRuntime.h>
-#include <hidl/IServiceManager.h>
 #include <hidl/Status.h>
 #include <nativehelper/ScopedLocalRef.h>