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