jni: Added lame duck timeout option
The lameduck timeout can now be passed ino on server construction to
override the default 5 seconds that we wait to finish any outstanding
server operations when the server shuts down.
MultiPart: 3/4
Change-Id: I7b9992b436793857bfe60b738bb0c8948518bf47
diff --git a/impl/google/rt/jni.go b/impl/google/rt/jni.go
index d215ed4..6e027f6 100644
--- a/impl/google/rt/jni.go
+++ b/impl/google/rt/jni.go
@@ -11,6 +11,7 @@
"v.io/v23"
"v.io/v23/context"
+ "v.io/v23/options"
jdiscovery "v.io/x/jni/impl/google/discovery"
jns "v.io/x/jni/impl/google/namespace"
@@ -112,7 +113,7 @@
}
//export Java_io_v_impl_google_rt_VRuntimeImpl_nativeWithNewServer
-func Java_io_v_impl_google_rt_VRuntimeImpl_nativeWithNewServer(jenv *C.JNIEnv, jRuntime C.jclass, jContext C.jobject, jName C.jstring, jDispatcher C.jobject, jExecutor C.jobject) C.jobject {
+func Java_io_v_impl_google_rt_VRuntimeImpl_nativeWithNewServer(jenv *C.JNIEnv, jRuntime C.jclass, jContext C.jobject, jName C.jstring, jDispatcher C.jobject, jExecutor C.jobject, jLameDuck C.jobject) C.jobject {
env := jutil.Env(uintptr(unsafe.Pointer(jenv)))
ctx, err := jcontext.GoContext(env, jutil.Object(uintptr(unsafe.Pointer(jContext))))
if err != nil {
@@ -125,7 +126,12 @@
jutil.JThrowV(env, err)
return nil
}
- newCtx, server, err := v23.WithNewDispatchingServer(ctx, name, d)
+ timeout, err := jutil.GoDuration(env, jutil.Object(uintptr(unsafe.Pointer(jLameDuck))))
+ if err != nil {
+ jutil.JThrowV(env, err)
+ return nil
+ }
+ newCtx, server, err := v23.WithNewDispatchingServer(ctx, name, d, options.LameDuckTimeout(timeout))
if err != nil {
jutil.JThrowV(env, err)
return nil