var m … var logger … // Register registers the balancer builder to the balancer map. b.Name // (lowercased) will be used as the name registered with this builder. If the // Builder implements ConfigParser, ParseConfig will be called when new service // configs are received by the resolver, and the result will be provided to the // Balancer in UpdateClientConnState. // // NOTE: this function must only be called during initialization time (i.e. in // an init() function), and is not thread-safe. If multiple Balancers are // registered with the same name, the one registered last will take effect. func Register(b Builder) { … } // unregisterForTesting deletes the balancer with the given name from the // balancer map. // // This function is not thread-safe. func unregisterForTesting(name string) { … } func init() { … } // Get returns the resolver builder registered with the given name. // Note that the compare is done in a case-insensitive fashion. // If no builder is register with the name, nil will be returned. func Get(name string) Builder { … } type SubConn … type NewSubConnOptions … type State … type ClientConn … type BuildOptions … type Builder … type ConfigParser … type PickInfo … type DoneInfo … var ErrNoSubConnAvailable … var ErrTransientFailure … type PickResult … // TransientFailureError returns e. It exists for backward compatibility and // will be deleted soon. // // Deprecated: no longer necessary, picker errors are treated this way by // default. func TransientFailureError(e error) error { … } type Picker … type Balancer … type ExitIdler … type SubConnState … type ClientConnState … var ErrBadResolverState … type ProducerBuilder … type Producer …