3 * Copyright 2014 gRPC authors.
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
19 // Package naming defines the naming API and related data structures for gRPC.
20 // The interface is EXPERIMENTAL and may be suject to change.
23 // Operation defines the corresponding operations for a name resolution change.
27 // Add indicates a new address is added.
29 // Delete indicates an exisiting address is deleted.
33 // Update defines a name resolution update. Notice that it is not valid having both
34 // empty string Addr and nil Metadata in an Update.
36 // Op indicates the operation of the update.
38 // Addr is the updated address. It is empty string if there is no address update.
40 // Metadata is the updated metadata. It is nil if there is no metadata update.
41 // Metadata is not required for a custom naming implementation.
45 // Resolver creates a Watcher for a target to track its resolution changes.
46 type Resolver interface {
47 // Resolve creates a Watcher for target.
48 Resolve(target string) (Watcher, error)
51 // Watcher watches for the updates on the specified target.
52 type Watcher interface {
53 // Next blocks until an update or error happens. It may return one or more
54 // updates. The first call should get the full set of the results. It should
55 // return an error if and only if Watcher cannot recover.
56 Next() ([]*Update, error)
57 // Close closes the Watcher.