Merge "Cleanup hwbinder getService code." am: 9be24a3040 am: 4ede371d80
am: ec840d1464
Change-Id: I83a7077f07689dc57ac4d8828508443cc4385292
This commit is contained in:
@@ -302,6 +302,14 @@ static jobject JHwBinder_native_getService(
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
auto manager = hardware::defaultServiceManager();
|
||||||
|
|
||||||
|
if (manager == nullptr) {
|
||||||
|
LOG(ERROR) << "Could not get hwservicemanager.";
|
||||||
|
signalExceptionForError(env, UNKNOWN_ERROR, true /* canThrowRemoteException */);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
const char *ifaceName = env->GetStringUTFChars(ifaceNameObj, NULL);
|
const char *ifaceName = env->GetStringUTFChars(ifaceNameObj, NULL);
|
||||||
if (ifaceName == NULL) {
|
if (ifaceName == NULL) {
|
||||||
return NULL; // XXX exception already pending?
|
return NULL; // XXX exception already pending?
|
||||||
@@ -312,32 +320,26 @@ static jobject JHwBinder_native_getService(
|
|||||||
return NULL; // XXX exception already pending?
|
return NULL; // XXX exception already pending?
|
||||||
}
|
}
|
||||||
|
|
||||||
LOG(INFO) << "looking for service '"
|
LOG(INFO) << "Looking for service "
|
||||||
<< serviceName
|
<< ifaceName
|
||||||
<< "'";
|
<< "/"
|
||||||
|
<< serviceName;
|
||||||
auto manager = hardware::defaultServiceManager();
|
|
||||||
|
|
||||||
if (manager == nullptr) {
|
|
||||||
LOG(ERROR) << "Could not get hwservicemanager.";
|
|
||||||
signalExceptionForError(env, UNKNOWN_ERROR, true /* canThrowRemoteException */);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
Return<sp<hidl::base::V1_0::IBase>> ret = manager->get(ifaceName, serviceName);
|
Return<sp<hidl::base::V1_0::IBase>> ret = manager->get(ifaceName, serviceName);
|
||||||
|
|
||||||
if (!ret.isOk()) {
|
|
||||||
signalExceptionForError(env, UNKNOWN_ERROR, true /* canThrowRemoteException */);
|
|
||||||
}
|
|
||||||
|
|
||||||
sp<hardware::IBinder> service = hardware::toBinder<
|
|
||||||
hidl::base::V1_0::IBase, hidl::base::V1_0::BpHwBase>(ret);
|
|
||||||
|
|
||||||
env->ReleaseStringUTFChars(ifaceNameObj, ifaceName);
|
env->ReleaseStringUTFChars(ifaceNameObj, ifaceName);
|
||||||
ifaceName = NULL;
|
ifaceName = NULL;
|
||||||
env->ReleaseStringUTFChars(serviceNameObj, serviceName);
|
env->ReleaseStringUTFChars(serviceNameObj, serviceName);
|
||||||
serviceName = NULL;
|
serviceName = NULL;
|
||||||
|
|
||||||
|
if (!ret.isOk()) {
|
||||||
|
signalExceptionForError(env, UNKNOWN_ERROR, true /* canThrowRemoteException */);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
sp<hardware::IBinder> service = hardware::toBinder<
|
||||||
|
hidl::base::V1_0::IBase, hidl::base::V1_0::BpHwBase>(ret);
|
||||||
|
|
||||||
if (service == NULL) {
|
if (service == NULL) {
|
||||||
signalExceptionForError(env, NAME_NOT_FOUND);
|
signalExceptionForError(env, NAME_NOT_FOUND);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|||||||
Reference in New Issue
Block a user