41 lines
951 B
Go
41 lines
951 B
Go
|
package zcash
|
||
|
|
||
|
import (
|
||
|
"net"
|
||
|
"strconv"
|
||
|
"time"
|
||
|
|
||
|
"github.com/btcsuite/btcd/wire"
|
||
|
)
|
||
|
|
||
|
type Address struct {
|
||
|
netaddr *wire.NetAddress
|
||
|
valid bool
|
||
|
blacklist bool
|
||
|
lastTried time.Time
|
||
|
}
|
||
|
|
||
|
func (a *Address) IsGood() bool {
|
||
|
return a.valid == true
|
||
|
}
|
||
|
|
||
|
func (a *Address) IsBad() bool {
|
||
|
return a.blacklist == true
|
||
|
}
|
||
|
|
||
|
func (a *Address) String() string {
|
||
|
portString := strconv.Itoa(int(a.netaddr.Port))
|
||
|
return net.JoinHostPort(a.netaddr.IP.String(), portString)
|
||
|
}
|
||
|
|
||
|
// Addresses should be sortable by least-recently-tried
|
||
|
|
||
|
type AddrList []*Address
|
||
|
|
||
|
func (list AddrList) Len() int { return len(list) }
|
||
|
func (list AddrList) Swap(i, j int) { list[i], list[j] = list[j], list[i] }
|
||
|
func (list AddrList) Less(i, j int) bool { return list[i].lastTried.Before(list[j].lastTried) }
|
||
|
|
||
|
// GetShuffledAddressList returns a slice of n valid addresses in random order.
|
||
|
func GetShuffledAddressList(addrList []*Address, n int) []*Address { return nil }
|