| // Copyright 2015 The Vanadium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| // +build java android |
| |
| package rpc |
| |
| import ( |
| "unsafe" |
| |
| jutil "v.io/x/jni/util" |
| ) |
| |
| // #include "jni.h" |
| import "C" |
| |
| var ( |
| // Global reference for io.v.v23.rpc.NativeCallback class. |
| jNativeCallbackClass jutil.Class |
| ) |
| |
| // Init initializes the JNI code with the given Java environment. This method |
| // must be invoked before any other method in this package and must be called |
| // from the main Java thread (e.g., On_Load()). |
| func Init(env jutil.Env) error { |
| var err error |
| jNativeCallbackClass, err = jutil.JFindClass(env, "io/v/v23/rpc/NativeCallback") |
| if err != nil { |
| return err |
| } |
| return nil |
| } |
| |
| //export Java_io_v_v23_rpc_NativeCallback_nativeOnSuccess |
| func Java_io_v_v23_rpc_NativeCallback_nativeOnSuccess(jenv *C.JNIEnv, jNativeCallback C.jobject, goSuccessPtr C.jlong, jResultObj C.jobject) { |
| jResult := jutil.Object(uintptr(unsafe.Pointer(jResultObj))) |
| (*(*func(jutil.Object))(jutil.NativePtr(goSuccessPtr)))(jResult) |
| } |
| |
| //export Java_io_v_v23_rpc_NativeCallback_nativeOnFailure |
| func Java_io_v_v23_rpc_NativeCallback_nativeOnFailure(jenv *C.JNIEnv, jNativeCallback C.jobject, goFailurePtr C.jlong, jVException C.jobject) { |
| env := jutil.Env(uintptr(unsafe.Pointer(jenv))) |
| err := jutil.GoError(env, jutil.Object(uintptr(unsafe.Pointer(jVException)))) |
| (*(*func(error))(jutil.NativePtr(goFailurePtr)))(err) |
| } |
| |
| //export Java_io_v_v23_rpc_NativeCallback_nativeFinalize |
| func Java_io_v_v23_rpc_NativeCallback_nativeFinalize(jenv *C.JNIEnv, jNativeCallback C.jobject, goSuccessPtr C.jlong, goFailurePtr C.jlong) { |
| jutil.GoUnref(jutil.NativePtr(goSuccessPtr)) |
| jutil.GoUnref(jutil.NativePtr(goFailurePtr)) |
| } |