// 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 discovery

import (
	jutil "v.io/x/jni/util"

	"v.io/v23/discovery"
	idiscovery "v.io/x/ref/lib/discovery"
)

// #include "jni.h"
import "C"

// JavaDiscovery converts a Go discovery instance into a Java discovery instance.
func JavaDiscovery(env jutil.Env, d discovery.T) (jutil.Object, error) {
	trigger := idiscovery.NewTrigger()
	// These reference will get unrefed when the jDiscovery object below is finalized.
	jutil.GoRef(trigger)
	jutil.GoRef(&d)

	jDiscovery, err := jutil.NewObject(env, jVDiscoveryImplClass, []jutil.Sign{jutil.LongSign, jutil.LongSign}, int64(jutil.PtrValue(&d)), int64(jutil.PtrValue(trigger)))
	if err != nil {
		return jutil.NullObject, err
	}
	return jDiscovery, nil
}
