Documentation ¶
Overview ¶
Package types contains types used in the codebase Most of the types have a Null prefix like gopkg.in/guregu/null.v3 and UnmarshalJSON and MarshalJSON methods.
Index ¶
- func GetDurationValue(v interface{}) (time.Duration, error)
- func ParseExtendedDuration(data string) (result time.Duration, err error)
- type DNSConfig
- type DNSPolicy
- type DNSSelect
- type Duration
- type Host
- type HostnameTrie
- type Hosts
- type IPPool
- type NullDNSPolicy
- type NullDNSSelect
- type NullDuration
- type NullHostnameTrie
- type NullHosts
- type NullIPPool
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func GetDurationValue ¶
GetDurationValue is a helper function that can convert a lot of different types to time.Duration.
TODO: move to a separate package and check for integer overflows?
Types ¶
type DNSConfig ¶
type DNSConfig struct { // If positive, defines how long DNS lookups should be returned from the cache. TTL null.String `json:"ttl"` // Select specifies the strategy to use when picking a single IP if more than one is returned for a host name. Select NullDNSSelect `json:"select"` // Policy specifies how to handle returning of IPv4 or IPv6 addresses. Policy NullDNSPolicy `json:"policy"` // FIXME: Valid is unused and is only added to satisfy some logic in // lib.Options.ForEachSpecified(), otherwise it would panic with // `reflect: call of reflect.Value.Bool on zero Value`. Valid bool `json:"-"` }
DNSConfig is the DNS resolver configuration.
func DefaultDNSConfig ¶
func DefaultDNSConfig() DNSConfig
DefaultDNSConfig returns the default DNS configuration.
func (*DNSConfig) UnmarshalJSON ¶
UnmarshalJSON implements json.Unmarshaler.
func (*DNSConfig) UnmarshalText ¶
UnmarshalText implements encoding.TextUnmarshaler.
type DNSPolicy ¶
type DNSPolicy uint8
DNSPolicy specifies the preference for handling IP versions in DNS resolutions.
const ( // DNSpreferIPv4 returns an IPv4 address if available, falling back to IPv6 otherwise. DNSpreferIPv4 DNSPolicy = iota + 1 // DNSpreferIPv6 returns an IPv6 address if available, falling back to IPv4 otherwise. DNSpreferIPv6 // DNSonlyIPv4 only returns an IPv4 address and the resolution will fail if no IPv4 address is found. DNSonlyIPv4 // DNSonlyIPv6 only returns an IPv6 address and the resolution will fail if no IPv6 address is found. DNSonlyIPv6 // DNSany returns any resolved address regardless of version. DNSany )
These are lower camel cased since enumer doesn't support it as a transform option. See https://github.com/alvaroloes/enumer/pull/60 .
func DNSPolicyString ¶
DNSPolicyString retrieves an enum value from the enum constants string name. Throws an error if the param is not part of the enum.
func DNSPolicyValues ¶
func DNSPolicyValues() []DNSPolicy
DNSPolicyValues returns all values of the enum
func (DNSPolicy) IsADNSPolicy ¶
IsADNSPolicy returns "true" if the value is listed in the enum definition. "false" otherwise
func (DNSPolicy) MarshalJSON ¶
MarshalJSON returns the JSON representation of d.
func (*DNSPolicy) UnmarshalJSON ¶
UnmarshalJSON converts JSON data to a valid DNSPolicy
type DNSSelect ¶
type DNSSelect uint8
DNSSelect is the strategy to use when picking a single IP if more than one is returned for a host name.
const ( // DNSfirst returns the first IP from the response. DNSfirst DNSSelect = iota + 1 // DNSroundRobin rotates the IP returned on each lookup. DNSroundRobin // DNSrandom returns a random IP from the response. DNSrandom )
These are lower camel cased since enumer doesn't support it as a transform option. See https://github.com/alvaroloes/enumer/pull/60 .
func DNSSelectString ¶
DNSSelectString retrieves an enum value from the enum constants string name. Throws an error if the param is not part of the enum.
func DNSSelectValues ¶
func DNSSelectValues() []DNSSelect
DNSSelectValues returns all values of the enum
func (DNSSelect) IsADNSSelect ¶
IsADNSSelect returns "true" if the value is listed in the enum definition. "false" otherwise
func (DNSSelect) MarshalJSON ¶
MarshalJSON returns the JSON representation of d.
func (*DNSSelect) UnmarshalJSON ¶
UnmarshalJSON converts JSON data to a valid DNSSelect
type Duration ¶
Duration is an alias for time.Duration that de/serialises to JSON as human-readable strings.
func (Duration) MarshalJSON ¶
MarshalJSON returns the JSON representation of d
func (*Duration) UnmarshalJSON ¶
UnmarshalJSON converts JSON data to Duration
func (*Duration) UnmarshalText ¶
UnmarshalText converts text data to Duration
type Host ¶
Host stores information about IP and port for a host.
func (*Host) MarshalText ¶
MarshalText implements the encoding.TextMarshaler interface. The encoding is the same as returned by String, with one exception: When len(ip) is zero, it returns an empty slice.
func (*Host) UnmarshalText ¶
UnmarshalText implements the encoding.TextUnmarshaler interface. The IP address is expected in a form accepted by ParseIP.
type HostnameTrie ¶
type HostnameTrie struct {
// contains filtered or unexported fields
}
HostnameTrie is a tree-structured list of hostname matches with support for wildcards exclusively at the start of the pattern. Items may only be inserted and searched. Internationalized hostnames are valid.
func NewHostnameTrie ¶
func NewHostnameTrie(source []string) (*HostnameTrie, error)
NewHostnameTrie returns a pointer to a new HostnameTrie or an error if the input is incorrect
type Hosts ¶
type Hosts struct {
// contains filtered or unexported fields
}
Hosts is wrapper around trieNode to integrate with net.TCPAddr
type IPPool ¶
type IPPool struct {
// contains filtered or unexported fields
}
IPPool represent a slice of IPBlocks
func NewIPPool ¶
NewIPPool returns an IPPool slice from the provided string representation that should be comma separated list of IPs, IP ranges(ip1-ip2) and CIDRs
type NullDNSPolicy ¶
NullDNSPolicy is a nullable wrapper around DNSPolicy, required for the current configuration system.
func (NullDNSPolicy) MarshalJSON ¶
func (d NullDNSPolicy) MarshalJSON() ([]byte, error)
MarshalJSON returns the JSON representation of d.
func (*NullDNSPolicy) UnmarshalJSON ¶
func (d *NullDNSPolicy) UnmarshalJSON(data []byte) error
UnmarshalJSON converts JSON data to a valid NullDNSPolicy.
type NullDNSSelect ¶
NullDNSSelect is a nullable wrapper around DNSSelect, required for the current configuration system.
func (NullDNSSelect) MarshalJSON ¶
func (d NullDNSSelect) MarshalJSON() ([]byte, error)
MarshalJSON returns the JSON representation of d.
func (*NullDNSSelect) UnmarshalJSON ¶
func (d *NullDNSSelect) UnmarshalJSON(data []byte) error
UnmarshalJSON converts JSON data to a valid NullDNSSelect.
type NullDuration ¶
NullDuration is a nullable Duration, in the same vein as the nullable types provided by package gopkg.in/guregu/null.v3.
func NewNullDuration ¶
func NewNullDuration(d time.Duration, valid bool) NullDuration
NewNullDuration is a simple helper constructor function
func NullDurationFrom ¶
func NullDurationFrom(d time.Duration) NullDuration
NullDurationFrom returns a new valid NullDuration from a time.Duration.
func (NullDuration) MarshalJSON ¶
func (d NullDuration) MarshalJSON() ([]byte, error)
MarshalJSON returns the JSON representation of d
func (NullDuration) TimeDuration ¶
func (d NullDuration) TimeDuration() time.Duration
TimeDuration returns a NullDuration's value as a stdlib Duration.
func (*NullDuration) UnmarshalJSON ¶
func (d *NullDuration) UnmarshalJSON(data []byte) error
UnmarshalJSON converts JSON data to a valid NullDuration
func (*NullDuration) UnmarshalText ¶
func (d *NullDuration) UnmarshalText(data []byte) error
UnmarshalText converts text data to a valid NullDuration
func (NullDuration) ValueOrZero ¶
func (d NullDuration) ValueOrZero() Duration
ValueOrZero returns the underlying Duration value of d if valid or its zero equivalent otherwise. It matches the existing guregu/null API.
type NullHostnameTrie ¶
type NullHostnameTrie struct { Trie *HostnameTrie Valid bool }
NullHostnameTrie is a nullable HostnameTrie, in the same vein as the nullable types provided by package gopkg.in/guregu/null.v3
func NewNullHostnameTrie ¶
func NewNullHostnameTrie(source []string) (NullHostnameTrie, error)
NewNullHostnameTrie returns a NullHostnameTrie encapsulating HostnameTrie or an error if the input is incorrect
func (NullHostnameTrie) MarshalJSON ¶
func (d NullHostnameTrie) MarshalJSON() ([]byte, error)
MarshalJSON implements json.Marshaler interface
func (*NullHostnameTrie) Source ¶
func (d *NullHostnameTrie) Source() []string
Source return source hostnames that were used diring the construction
func (*NullHostnameTrie) UnmarshalJSON ¶
func (d *NullHostnameTrie) UnmarshalJSON(data []byte) error
UnmarshalJSON converts JSON data to a valid NullHostnameTrie
func (*NullHostnameTrie) UnmarshalText ¶
func (d *NullHostnameTrie) UnmarshalText(data []byte) error
UnmarshalText converts text data to a valid NullHostnameTrie
type NullHosts ¶
NullHosts is a wrapper around Hosts like guregu/null
func NewNullHosts ¶
NewNullHosts returns valid (Valid: true) Hosts
func (NullHosts) MarshalJSON ¶
MarshalJSON converts NullHosts to valid JSON
func (*NullHosts) UnmarshalJSON ¶
UnmarshalJSON converts JSON to NullHosts
type NullIPPool ¶
NullIPPool is a nullable IPPool
func (*NullIPPool) MarshalText ¶
func (n *NullIPPool) MarshalText() ([]byte, error)
MarshalText returns the IPs pool in text form
func (*NullIPPool) UnmarshalText ¶
func (n *NullIPPool) UnmarshalText(data []byte) error
UnmarshalText converts text data to a valid NullIPPool