chore: rule-provider now read yaml line-by-line

This commit is contained in:
wwqgtxx
2023-04-01 14:11:09 +08:00
parent 54cad53f5f
commit 54c2fa98b4
4 changed files with 148 additions and 66 deletions

View File

@ -28,23 +28,24 @@ func (i *ipcidrStrategy) ShouldResolveIP() bool {
return i.shouldResolveIP
}
func (i *ipcidrStrategy) OnUpdate(rules []string) {
ipCidrTrie := trie.NewIpCidrTrie()
count := 0
for _, rule := range rules {
err := ipCidrTrie.AddIpCidrForString(rule)
if err != nil {
log.Warnln("invalid Ipcidr:[%s]", rule)
} else {
count++
}
}
i.trie = ipCidrTrie
i.count = count
i.shouldResolveIP = i.count > 0
func (i *ipcidrStrategy) Reset() {
i.trie = trie.NewIpCidrTrie()
i.count = 0
i.shouldResolveIP = false
}
func (i *ipcidrStrategy) Insert(rule string) {
err := i.trie.AddIpCidrForString(rule)
if err != nil {
log.Warnln("invalid Ipcidr:[%s]", rule)
} else {
i.shouldResolveIP = true
i.count++
}
}
func (i *ipcidrStrategy) FinishInsert() {}
func NewIPCidrStrategy() *ipcidrStrategy {
return &ipcidrStrategy{}
}