aboutsummaryrefslogtreecommitdiffstats
path: root/jrt/src/com/yahoo/jrt/slobrok/api/IMirror.java
blob: e1cfcc71df92cb1788952f506feca4db0ef1a729 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt.slobrok.api;

import java.util.List;

/**
 * Defines an interface for the name server lookup.
 *
 * @author Simon Thoresen Hult
 */
public interface IMirror {

    /**
     * Obtain all the services matching a given pattern.
     *
     * The pattern is matched against all service names in the local mirror repository. A service name may contain '/'
     * as a separator token. A pattern may contain '*' to match anything up to the next '/' (or the end of the
     * name). This means that the pattern 'foo/<!-- slash-star -->*<!-- star-slash -->/baz' would match the service
     * names 'foo/bar/baz' and 'foo/xyz/baz'. The pattern 'foo/b*' would match 'foo/bar', but neither 'foo/xyz' nor
     * 'foo/bar/baz'. The pattern 'a*b' will never match anything.
     * As a special case, a pattern can end in '**' to match the rest of a name including '/' separators.
     *
     * @return a list of all matching services, with corresponding connect specs
     * @param pattern The pattern used for matching
     **/
    List<Mirror.Entry> lookup(String pattern);

    /**
     * Obtain the number of updates seen by this mirror. The value may wrap, but will never become 0 again. This can be
     * used for name lookup optimization, because the results returned by lookup() will never change unless this number
     * also changes.
     *
     * @return number of slobrok updates seen
     **/
    int updates();

}