Package dnssrv provides an Instancer implementation for DNS SRV records.



    This section is empty.


    View Source
    var ErrPortZero = errors.New("resolver returned SRV record with port 0")

      ErrPortZero is returned by the resolve machinery when a DNS resolver returns an SRV record with its port set to zero.


      This section is empty.


      type Instancer

      type Instancer struct {
      	// contains filtered or unexported fields

        Instancer yields instances from the named DNS SRV record. The name is resolved on a fixed schedule. Priorities and weights are ignored.

        func NewInstancer

        func NewInstancer(
        	name string,
        	ttl time.Duration,
        	logger log.Logger,
        ) *Instancer

          NewInstancer returns a DNS SRV instancer.

          func NewInstancerDetailed

          func NewInstancerDetailed(
          	name string,
          	refresh *time.Ticker,
          	lookup Lookup,
          	logger log.Logger,
          ) *Instancer

            NewInstancerDetailed is the same as NewInstancer, but allows users to provide an explicit lookup refresh ticker instead of a TTL, and specify the lookup function instead of using net.LookupSRV.

            func (*Instancer) Deregister

            func (in *Instancer) Deregister(ch chan<- sd.Event)

              Deregister implements Instancer.

              func (*Instancer) Register

              func (in *Instancer) Register(ch chan<- sd.Event)

                Register implements Instancer.

                func (*Instancer) Stop

                func (in *Instancer) Stop()

                  Stop terminates the Instancer.

                  type Lookup

                  type Lookup func(service, proto, name string) (cname string, addrs []*net.SRV, err error)

                    Lookup is a function that resolves a DNS SRV record to multiple addresses. It has the same signature as net.LookupSRV.