//export Java_io_v_impl_google_rpc_StreamImpl_nativeSend func Java_io_v_impl_google_rpc_StreamImpl_nativeSend(jenv *C.JNIEnv, jStream C.jobject, goRef C.jlong, jVomItem C.jbyteArray, jCallbackObj C.jobject) { env := jutil.Env(uintptr(unsafe.Pointer(jenv))) jCallback := jutil.Object(uintptr(unsafe.Pointer(jCallbackObj))) vomItem := jutil.GoByteArray(env, jutil.Object(uintptr(unsafe.Pointer(jVomItem)))) jutil.DoAsyncCall(env, jCallback, func() (jutil.Object, error) { item, err := jutil.VomDecodeToValue(vomItem) if err != nil { return jutil.NullObject, err } return jutil.NullObject, (*(*rpc.Stream)(jutil.GoRefValue(jutil.Ref(goRef)))).Send(item) }) }
func (c *bleReadWriteCloser) Read(b []byte) (n int, err error) { env, freeFunc := jutil.GetEnv() // This method will invoke the freeFunc(). jResult, err := jutil.CallCallbackMethod(env, freeFunc, c.jStream, "read", []jutil.Sign{jutil.IntSign}, len(b)) if err != nil { return 0, err } env, freeFunc = jutil.GetEnv() defer freeFunc() defer jutil.DeleteGlobalRef(env, jResult) data := jutil.GoByteArray(env, jResult) return copy(b, data), nil }
//export Java_io_v_v23_security_VPrincipalImpl_nativeSign func Java_io_v_v23_security_VPrincipalImpl_nativeSign(jenv *C.JNIEnv, jVPrincipalImpl C.jobject, goRef C.jlong, jMessage C.jbyteArray) C.jobject { env := jutil.Env(uintptr(unsafe.Pointer(jenv))) message := jutil.GoByteArray(env, jutil.Object(uintptr(unsafe.Pointer(jMessage)))) sig, err := (*(*security.Principal)(jutil.GoRefValue(jutil.Ref(goRef)))).Sign(message) if err != nil { jutil.JThrowV(env, err) return nil } jSig, err := JavaSignature(env, sig) if err != nil { jutil.JThrowV(env, err) return nil } return C.jobject(unsafe.Pointer(jSig)) }