| // Copyright 2016 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. |
| |
| package io.v.impl.google.lib.discovery; |
| |
| import io.v.v23.context.VContext; |
| import io.v.v23.discovery.Discovery; |
| import io.v.v23.verror.VException; |
| |
| import org.joda.time.Duration; |
| |
| /** |
| * Used for creating Vanadium global discovery instances. |
| * <p> |
| * TODO(jhahn): This is an experimental work to see its feasibility and set |
| * the long-term goal, and can be changed without notice. |
| */ |
| class GlobalDiscovery { |
| private static native Discovery nativeNewDiscovery( |
| VContext ctx, String path, Duration mountTtl, Duration scanInterval) throws VException; |
| |
| /** |
| * Returns a new global {@link Discovery} instance that uses the Vanadium namespace |
| * under {@link path} with default mount ttl (120s) and scan interval (90s). |
| * |
| * @param ctx current context |
| * @param path a namespace path to use for global discovery |
| * @throws VException if a new discovery instance cannot be created |
| */ |
| public static Discovery newDiscovery(VContext ctx, String path) throws VException { |
| return nativeNewDiscovery(ctx, path, Duration.ZERO, Duration.ZERO); |
| } |
| |
| /** |
| * Returns a new global {@link Discovery} instance that uses the Vanadium |
| * namespace under {@link path}. |
| * |
| * @param ctx current context |
| * @param path a namespace path to use for global discovery |
| * @param mountTTL the duration for which the advertisement lives in a mounttable |
| * after advertising is cancelled |
| * @param scanInterval the duration to scan a mounttable periodically |
| * @throws VException if a new discovery instance cannot be created |
| */ |
| public static Discovery newDiscovery( |
| VContext ctx, String path, Duration mountTtl, Duration scanInterval) throws VException { |
| return nativeNewDiscovery(ctx, path, mountTtl, scanInterval); |
| } |
| } |