Ejemplo n.º 1
0
func (t *relayListener) WANAddresses() []*url.URL {
	t.mut.RLock()
	client := t.client
	t.mut.RUnlock()

	if client == nil {
		return nil
	}

	curi := client.URI()
	if curi == nil {
		return nil
	}

	return []*url.URL{curi}
}
Ejemplo n.º 2
0
// RelayStatus returns the latency and OK status for a given relay.
func (s *Svc) RelayStatus(uri string) (time.Duration, bool) {
	if s == nil {
		// A nil client does not have a status, really. Yet we may be called
		// this way, for raisins...
		return time.Hour, false
	}

	s.mut.RLock()
	defer s.mut.RUnlock()

	for _, client := range s.clients {
		if client.URI().String() == uri {
			return client.Latency(), client.StatusOK()
		}
	}

	return time.Hour, false
}
Ejemplo n.º 3
0
// Relays return the list of relays that currently have an OK status.
func (s *Svc) Relays() []string {
	if s == nil {
		// A nil client does not have a status, really. Yet we may be called
		// this way, for raisins...
		return nil
	}

	s.mut.RLock()
	relays := make([]string, 0, len(s.clients))
	for _, client := range s.clients {
		relays = append(relays, client.URI().String())
	}
	s.mut.RUnlock()

	sort.Strings(relays)

	return relays
}