12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- /*
- *
- * Copyright 2017 gRPC authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
- // Package passthrough implements a pass-through resolver. It sends the target
- // name without scheme back to gRPC as resolved address.
- package passthrough
- import (
- "errors"
- "google.golang.org/grpc/resolver"
- )
- const scheme = "passthrough"
- type passthroughBuilder struct{}
- func (*passthroughBuilder) Build(target resolver.Target, cc resolver.ClientConn, opts resolver.BuildOptions) (resolver.Resolver, error) {
- if target.Endpoint() == "" && opts.Dialer == nil {
- return nil, errors.New("passthrough: received empty target in Build()")
- }
- r := &passthroughResolver{
- target: target,
- cc: cc,
- }
- r.start()
- return r, nil
- }
- func (*passthroughBuilder) Scheme() string {
- return scheme
- }
- type passthroughResolver struct {
- target resolver.Target
- cc resolver.ClientConn
- }
- func (r *passthroughResolver) start() {
- r.cc.UpdateState(resolver.State{Addresses: []resolver.Address{{Addr: r.target.Endpoint()}}})
- }
- func (*passthroughResolver) ResolveNow(o resolver.ResolveNowOptions) {}
- func (*passthroughResolver) Close() {}
- func init() {
- resolver.Register(&passthroughBuilder{})
- }
|