trie

package
v1.18.9 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 29, 2024 License: GPL-3.0 Imports: 11 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrInvalidDomain = errors.New("invalid domain")

ErrInvalidDomain means insert domain is invalid

View Source
var (
	ErrorOverMaxValue = errors.New("the value don't over max value")
)

Functions

func ValidAndSplitDomain

func ValidAndSplitDomain(domain string) ([]string, bool)

Types

type DomainSet

type DomainSet struct {
	// contains filtered or unexported fields
}

func ReadDomainSetBin added in v1.18.7

func ReadDomainSetBin(r io.Reader) (ds *DomainSet, err error)

func (*DomainSet) Foreach added in v1.18.7

func (ss *DomainSet) Foreach(f func(key string) bool)

func (*DomainSet) Has

func (ss *DomainSet) Has(key string) bool

Has query for a key and return whether it presents in the DomainSet.

func (*DomainSet) MatchDomain added in v1.18.8

func (ss *DomainSet) MatchDomain(domain string) bool

MatchDomain implements C.DomainMatcher

func (*DomainSet) WriteBin added in v1.18.7

func (ss *DomainSet) WriteBin(w io.Writer) (err error)

type DomainTrie

type DomainTrie[T any] struct {
	// contains filtered or unexported fields
}

DomainTrie contains the main logic for adding and searching nodes for domain segments. support wildcard domain (e.g *.google.com)

func New

func New[T any]() *DomainTrie[T]

New returns a new, empty Trie.

func (*DomainTrie[T]) Foreach

func (t *DomainTrie[T]) Foreach(fn func(domain string, data T) bool)

func (*DomainTrie[T]) Insert

func (t *DomainTrie[T]) Insert(domain string, data T) error

Insert adds a node to the trie. Support 1. www.example.com 2. *.example.com 3. subdomain.*.example.com 4. .example.com 5. +.example.com

func (*DomainTrie[T]) IsEmpty added in v1.18.8

func (t *DomainTrie[T]) IsEmpty() bool

func (*DomainTrie[T]) NewDomainSet

func (t *DomainTrie[T]) NewDomainSet() *DomainSet

NewDomainSet creates a new *DomainSet struct, from a DomainTrie.

func (*DomainTrie[T]) Optimize

func (t *DomainTrie[T]) Optimize()

func (*DomainTrie[T]) Search

func (t *DomainTrie[T]) Search(domain string) *Node[T]

Search is the most important part of the Trie. Priority as: 1. static part 2. wildcard domain 2. dot wildcard domain

type IPV6

type IPV6 bool

type IpCidrNode

type IpCidrNode struct {
	Mark bool
	// contains filtered or unexported fields
}

func NewIpCidrNode

func NewIpCidrNode(mark bool, maxValue uint32) *IpCidrNode

type IpCidrTrie

type IpCidrTrie struct {
	// contains filtered or unexported fields
}

func NewIpCidrTrie

func NewIpCidrTrie() *IpCidrTrie

func (*IpCidrTrie) AddIpCidr

func (trie *IpCidrTrie) AddIpCidr(ipCidr *net.IPNet) error

func (*IpCidrTrie) AddIpCidrForString

func (trie *IpCidrTrie) AddIpCidrForString(ipCidr string) error

func (*IpCidrTrie) IsContain

func (trie *IpCidrTrie) IsContain(ip net.IP) bool

func (*IpCidrTrie) IsContainForString

func (trie *IpCidrTrie) IsContainForString(ipString string) bool

type Node

type Node[T any] struct {
	// contains filtered or unexported fields
}

Node is the trie's node

func (*Node[T]) Data

func (n *Node[T]) Data() T

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL