refactor: clear linkname,reduce cycle dependencies,transport init geosite function

This commit is contained in:
Skyxim
2022-06-10 13:36:09 +08:00
parent 9a55213ddc
commit 130a3a261d
15 changed files with 203 additions and 149 deletions

View File

@@ -99,7 +99,8 @@ func (rp *ruleSetProvider) MarshalJSON() ([]byte, error) {
})
}
func NewRuleSetProvider(name string, behavior P.RuleType, interval time.Duration, vehicle P.Vehicle) P.RuleProvider {
func NewRuleSetProvider(name string, behavior P.RuleType, interval time.Duration, vehicle P.Vehicle,
parse func(tp, payload, target string, params []string) (parsed C.Rule, parseErr error)) P.RuleProvider {
rp := &ruleSetProvider{
behavior: behavior,
}
@@ -112,7 +113,7 @@ func NewRuleSetProvider(name string, behavior P.RuleType, interval time.Duration
fetcher := newFetcher(name, interval, vehicle, rulesParse, onUpdate)
rp.fetcher = fetcher
rp.strategy = newStrategy(behavior)
rp.strategy = newStrategy(behavior, parse)
wrapper := &RuleSetProvider{
rp,
@@ -123,7 +124,7 @@ func NewRuleSetProvider(name string, behavior P.RuleType, interval time.Duration
return wrapper
}
func newStrategy(behavior P.RuleType) ruleStrategy {
func newStrategy(behavior P.RuleType, parse func(tp, payload, target string, params []string) (parsed C.Rule, parseErr error)) ruleStrategy {
switch behavior {
case P.Domain:
strategy := NewDomainStrategy()
@@ -132,7 +133,7 @@ func newStrategy(behavior P.RuleType) ruleStrategy {
strategy := NewIPCidrStrategy()
return strategy
case P.Classical:
strategy := NewClassicalStrategy()
strategy := NewClassicalStrategy(parse)
return strategy
default:
return nil